diff --git a/libr/anal/arch/hexagon/hexagon_anal.c b/libr/anal/arch/hexagon/hexagon_anal.c new file mode 100644 index 0000000000..86b4be7292 --- /dev/null +++ b/libr/anal/arch/hexagon/hexagon_anal.c @@ -0,0 +1,1809 @@ +#include +#include +#include +#include +#include +#include +#include "hexagon.h" +#include "hexagon_insn.h" + +int hexagon_anal_instruction(HexInsn *hi, RAnalOp *op) { + switch (hi->instruction) { + case HEX_INS_CALL__R22_2: { + // call #r22:2 + op->type = R_ANAL_OP_TYPE_CALL; + break; + } + case HEX_INS_IF__PU__CALL__R15_2: { + // if (Pu) call #r15:2 + op->type = R_ANAL_OP_TYPE_CALL; + break; + } + case HEX_INS_IF__NOT_PU_CALL__R15_2: { + // if !Pu call #r15:2 + op->type = R_ANAL_OP_TYPE_CALL; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, #-1) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, #-1) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = tstbit (Rs, #0) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, #-1) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, #-1) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = tstbit (Rs, #0) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, #-1) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, #-1) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = tstbit (Rs, #0) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, #-1) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, #-1) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = tstbit (Rs, #0) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, #U5) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, #U5) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gtu (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gtu (Rs, #U5) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gtu (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gtu (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, #-1) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, #-1) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = tstbit (Rs, #0) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, #-1) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, #-1) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = tstbit (Rs, #0) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, #-1) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, #-1) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = tstbit (Rs, #0) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, #-1) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, #-1) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = tstbit (Rs, #0) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, #U5) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, #U5) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gtu (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gtu (Rs, #U5) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gtu (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gtu (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, Rt) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, Rt) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.eq (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.eq (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.eq (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.eq (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, Rt) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, Rt) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gt (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gt (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gt (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gt (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gtu (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gtu (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gtu (Rs, Rt) ; if (p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gtu (Rs, Rt) ; if (p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2: { + // p0 = cmp.gtu (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2: { + // p1 = cmp.gtu (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2: { + // p0 = cmp.gtu (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2: { + // p1 = cmp.gtu (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_JUMP__R22_2: { + // jump #r22:2 + op->type = R_ANAL_OP_TYPE_JMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__PU__JUMP_NT__R15_2: { + // if (Pu) jump:nt #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__PU__JUMP_T__R15_2: { + // if (Pu) jump:t #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__NOT_PU_JUMP_NT__R15_2: { + // if !Pu jump:nt #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__NOT_PU_JUMP_T__R15_2: { + // if !Pu jump:t #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__PU_NEW__JUMP_NT__R15_2: { + // if (Pu.new) jump:nt #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__PU_NEW__JUMP_T__R15_2: { + // if (Pu.new) jump:t #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__NOT_PU_NEW_JUMP_NT__R15_2: { + // if !Pu.new jump:nt #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__NOT_PU_NEW_JUMP_T__R15_2: { + // if !Pu.new jump:t #r15:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS__NOT____0__JUMP_NT__R13_2: { + // if (Rs != #0) jump:nt #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS__NOT____0__JUMP_T__R13_2: { + // if (Rs != #0) jump:t #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS_GT_EQ___0__JUMP_NT__R13_2: { + // if (Rs> = #0) jump:nt #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS_GT_EQ___0__JUMP_T__R13_2: { + // if (Rs> = #0) jump:t #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS__EQ___0__JUMP_NT__R13_2: { + // if (Rs == #0) jump:nt #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS__EQ___0__JUMP_T__R13_2: { + // if (Rs == #0) jump:t #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS_LT_EQ___0__JUMP_NT__R13_2: { + // if (Rs< = #0) jump:nt #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__RS_LT_EQ___0__JUMP_T__R13_2: { + // if (Rs< = #0) jump:t #r13:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_RD____U6___JUMP__R9_2: { + // Rd = #U6 ; jump #r9:2 + op->type = R_ANAL_OP_TYPE_JMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_MULT_RD___RS___JUMP__R9_2: { + // Rd = Rs ; jump #r9:2 + op->type = R_ANAL_OP_TYPE_JMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_DEALLOC_RETURN: { + // dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__PS_NEW__DEALLOC_RETURN_NT: { + // if (Ps.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__PS__DEALLOC_RETURN: { + // if (Ps) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__PS_NEW__DEALLOC_RETURN_T: { + // if (Ps.new) dealloc_return:t + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_NT: { + // if !Ps.new dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__NOT_PS_DEALLOC_RETURN: { + // if !Ps dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_T: { + // if !Ps.new dealloc_return:t + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2: { + // if (cmp.eq (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_T__R9_2: { + // if (cmp.eq (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2: { + // if (!cmp.eq (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_T__R9_2: { + // if (!cmp.eq (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_NT__R9_2: { + // if (cmp.gt (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_T__R9_2: { + // if (cmp.gt (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_NT__R9_2: { + // if (!cmp.gt (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_T__R9_2: { + // if (!cmp.gt (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2: { + // if (cmp.gtu (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_T__R9_2: { + // if (cmp.gtu (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2: { + // if (!cmp.gtu (Ns.new, Rt)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_T__R9_2: { + // if (!cmp.gtu (Ns.new, Rt)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_NT__R9_2: { + // if (cmp.gt (Rt, Ns.new)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_T__R9_2: { + // if (cmp.gt (Rt, Ns.new)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_NT__R9_2: { + // if (!cmp.gt (Rt, Ns.new)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_T__R9_2: { + // if (!cmp.gt (Rt, Ns.new)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2: { + // if (cmp.gtu (Rt, Ns.new)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_T__R9_2: { + // if (cmp.gtu (Rt, Ns.new)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2: { + // if (!cmp.gtu (Rt, Ns.new)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_T__R9_2: { + // if (!cmp.gtu (Rt, Ns.new)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2: { + // if (cmp.eq (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_T__R9_2: { + // if (cmp.eq (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2: { + // if (!cmp.eq (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_T__R9_2: { + // if (!cmp.eq (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_NT__R9_2: { + // if (cmp.gt (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_T__R9_2: { + // if (cmp.gt (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_NT__R9_2: { + // if (!cmp.gt (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_T__R9_2: { + // if (!cmp.gt (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2: { + // if (cmp.gtu (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_T__R9_2: { + // if (cmp.gtu (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2: { + // if (!cmp.gtu (Ns.new, #U5)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_T__R9_2: { + // if (!cmp.gtu (Ns.new, #U5)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_NT__R9_2: { + // if (tstbit (Ns.new, #0)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_T__R9_2: { + // if (tstbit (Ns.new, #0)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_NT__R9_2: { + // if (!tstbit (Ns.new, #0)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_T__R9_2: { + // if (!tstbit (Ns.new, #0)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_NT__R9_2: { + // if (cmp.eq (Ns.new, #-1)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_T__R9_2: { + // if (cmp.eq (Ns.new, #-1)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_NT__R9_2: { + // if (!cmp.eq (Ns.new, #-1)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_T__R9_2: { + // if (!cmp.eq (Ns.new, #-1)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_NT__R9_2: { + // if (cmp.gt (Ns.new, #-1)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_T__R9_2: { + // if (cmp.gt (Ns.new, #-1)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_NT__R9_2: { + // if (!cmp.gt (Ns.new, #-1)) jump:nt #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_T__R9_2: { + // if (!cmp.gt (Ns.new, #-1)) jump:t #r9:2 + op->type = R_ANAL_OP_TYPE_CJMP; + op->jump = UT64_MAX; + op->fail = op->addr + op->size; + break; + } + case HEX_INS_DUPLEX_RD_____1___DEALLOC_RETURN: { + // Rd = #-1 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD_____1___IF___NOT__P0__DEALLOC_RETURN: { + // Rd = #-1 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD_____1___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = #-1 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD_____1___IF__P0__DEALLOC_RETURN: { + // Rd = #-1 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD_____1___IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = #-1 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD____U6___DEALLOC_RETURN: { + // Rd = #u6 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD____U6___IF___NOT__P0__DEALLOC_RETURN: { + // Rd = #u6 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD____U6___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = #u6 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD____U6___IF__P0__DEALLOC_RETURN: { + // Rd = #u6 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD____U6___IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = #u6 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___RS___DEALLOC_RETURN: { + // Rd = Rs ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___RS___IF___NOT__P0__DEALLOC_RETURN: { + // Rd = Rs ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___RS___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = Rs ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___RS___IF__P0__DEALLOC_RETURN: { + // Rd = Rs ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___RS___IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = Rs ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS____1____DEALLOC_RETURN: { + // Rd = add (Rs, #-1) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = add (Rs, #-1) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Rs, #-1) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0__DEALLOC_RETURN: { + // Rd = add (Rs, #-1) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Rs, #-1) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS___1____DEALLOC_RETURN: { + // Rd = add (Rs, #1) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = add (Rs, #1) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Rs, #1) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0__DEALLOC_RETURN: { + // Rd = add (Rs, #1) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Rs, #1) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__SP___U6_2____DEALLOC_RETURN: { + // Rd = add (Sp, #u6:2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = add (Sp, #u6:2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Sp, #u6:2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0__DEALLOC_RETURN: { + // Rd = add (Sp, #u6:2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = add (Sp, #u6:2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___1____DEALLOC_RETURN: { + // Rd = and (Rs, #1) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = and (Rs, #1) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = and (Rs, #1) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0__DEALLOC_RETURN: { + // Rd = and (Rs, #1) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = and (Rs, #1) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___255____DEALLOC_RETURN: { + // Rd = and (Rs, #255) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = and (Rs, #255) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = and (Rs, #255) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0__DEALLOC_RETURN: { + // Rd = and (Rs, #255) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = and (Rs, #255) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____DEALLOC_RETURN: { + // Rd = memb (Rs + #u3:0) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memb (Rs + #u3:0) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memb (Rs + #u3:0) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0__DEALLOC_RETURN: { + // Rd = memb (Rs + #u3:0) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memb (Rs + #u3:0) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____DEALLOC_RETURN: { + // Rd = memh (Rs + #u3:1) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memh (Rs + #u3:1) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memh (Rs + #u3:1) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0__DEALLOC_RETURN: { + // Rd = memh (Rs + #u3:1) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memh (Rs + #u3:1) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____DEALLOC_RETURN: { + // Rd = memub (Rs + #u4:0) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memub (Rs + #u4:0) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memub (Rs + #u4:0) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0__DEALLOC_RETURN: { + // Rd = memub (Rs + #u4:0) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memub (Rs + #u4:0) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____DEALLOC_RETURN: { + // Rd = memuh (Rs + #u3:1) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memuh (Rs + #u3:1) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memuh (Rs + #u3:1) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0__DEALLOC_RETURN: { + // Rd = memuh (Rs + #u3:1) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memuh (Rs + #u3:1) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____DEALLOC_RETURN: { + // Rd = memw (Rs + #u4:2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memw (Rs + #u4:2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memw (Rs + #u4:2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0__DEALLOC_RETURN: { + // Rd = memw (Rs + #u4:2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memw (Rs + #u4:2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____DEALLOC_RETURN: { + // Rd = memw (Sp + #u5:2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = memw (Sp + #u5:2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memw (Sp + #u5:2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0__DEALLOC_RETURN: { + // Rd = memw (Sp + #u5:2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = memw (Sp + #u5:2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTB__RS____DEALLOC_RETURN: { + // Rd = sxtb (Rs) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = sxtb (Rs) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = sxtb (Rs) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0__DEALLOC_RETURN: { + // Rd = sxtb (Rs) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = sxtb (Rs) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTH__RS____DEALLOC_RETURN: { + // Rd = sxth (Rs) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = sxth (Rs) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = sxth (Rs) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0__DEALLOC_RETURN: { + // Rd = sxth (Rs) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = sxth (Rs) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ZXTH__RS____DEALLOC_RETURN: { + // Rd = zxth (Rs) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0__DEALLOC_RETURN: { + // Rd = zxth (Rs) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = zxth (Rs) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0__DEALLOC_RETURN: { + // Rd = zxth (Rs) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rd = zxth (Rs) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0___U2____DEALLOC_RETURN: { + // Rdd = combine (#0, #u2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (#0, #u2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#0, #u2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (#0, #u2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#0, #u2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0__RS____DEALLOC_RETURN: { + // Rdd = combine (#0, Rs) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (#0, Rs) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#0, Rs) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (#0, Rs) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#0, Rs) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___1___U2____DEALLOC_RETURN: { + // Rdd = combine (#1, #u2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (#1, #u2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#1, #u2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (#1, #u2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#1, #u2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___2___U2____DEALLOC_RETURN: { + // Rdd = combine (#2, #u2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (#2, #u2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#2, #u2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (#2, #u2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#2, #u2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___3___U2____DEALLOC_RETURN: { + // Rdd = combine (#3, #u2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (#3, #u2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#3, #u2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (#3, #u2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (#3, #u2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE__RS___0____DEALLOC_RETURN: { + // Rdd = combine (Rs, #0) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = combine (Rs, #0) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (Rs, #0) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0__DEALLOC_RETURN: { + // Rdd = combine (Rs, #0) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = combine (Rs, #0) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____DEALLOC_RETURN: { + // Rdd = memd (Sp + #u5:3) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0__DEALLOC_RETURN: { + // Rdd = memd (Sp + #u5:3) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = memd (Sp + #u5:3) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0__DEALLOC_RETURN: { + // Rdd = memd (Sp + #u5:3) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rdd = memd (Sp + #u5:3) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RS__RX____DEALLOC_RETURN: { + // Rx = add (Rs, Rx) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__DEALLOC_RETURN: { + // Rx = add (Rs, Rx) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rs, Rx) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__DEALLOC_RETURN: { + // Rx = add (Rs, Rx) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rs, Rx) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX___S7____DEALLOC_RETURN: { + // Rx = add (Rx, #s7) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__DEALLOC_RETURN: { + // Rx = add (Rx, #s7) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rx, #s7) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__DEALLOC_RETURN: { + // Rx = add (Rx, #s7) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rx, #s7) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX__RS____DEALLOC_RETURN: { + // Rx = add (Rx, Rs) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__DEALLOC_RETURN: { + // Rx = add (Rx, Rs) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rx, Rs) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__DEALLOC_RETURN: { + // Rx = add (Rx, Rs) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__DEALLOC_RETURN_NT: { + // Rx = add (Rx, Rs) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0__RD____0___DEALLOC_RETURN: { + // if (! p0) Rd = #0 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN: { + // if (! p0) Rd = #0 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // if (! p0) Rd = #0 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0__DEALLOC_RETURN: { + // if (! p0) Rd = #0 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT: { + // if (! p0) Rd = #0 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___DEALLOC_RETURN: { + // if (! p0.new) Rd = #0 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN: { + // if (! p0.new) Rd = #0 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // if (! p0.new) Rd = #0 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN: { + // if (! p0.new) Rd = #0 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT: { + // if (! p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0__RD____0___DEALLOC_RETURN: { + // if (p0) Rd = #0 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN: { + // if (p0) Rd = #0 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // if (p0) Rd = #0 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0__DEALLOC_RETURN: { + // if (p0) Rd = #0 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT: { + // if (p0) Rd = #0 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0_NEW__RD____0___DEALLOC_RETURN: { + // if (p0.new) Rd = #0 ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN: { + // if (p0.new) Rd = #0 ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // if (p0.new) Rd = #0 ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN: { + // if (p0.new) Rd = #0 ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT: { + // if (p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____DEALLOC_RETURN: { + // p0 = cmp.eq (Rs, #u2) ; dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__DEALLOC_RETURN: { + // p0 = cmp.eq (Rs, #u2) ; if (! p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT: { + // p0 = cmp.eq (Rs, #u2) ; if (! p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__DEALLOC_RETURN: { + // p0 = cmp.eq (Rs, #u2) ; if (p0) dealloc_return + op->type = R_ANAL_OP_TYPE_RET; + break; + } + case HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__DEALLOC_RETURN_NT: { + // p0 = cmp.eq (Rs, #u2) ; if (p0.new) dealloc_return:nt + op->type = R_ANAL_OP_TYPE_RET; + break; + } + } + return op->size; +} diff --git a/libr/anal/arch/hexagon/hexagon_anal.h b/libr/anal/arch/hexagon/hexagon_anal.h new file mode 100644 index 0000000000..35fd49b4f5 --- /dev/null +++ b/libr/anal/arch/hexagon/hexagon_anal.h @@ -0,0 +1,2 @@ +int hexagon_anal_instruction(HexInsn *hi, RAnalOp *op); + diff --git a/libr/anal/p/anal_hexagon.c b/libr/anal/p/anal_hexagon.c new file mode 100644 index 0000000000..1e60a3c879 --- /dev/null +++ b/libr/anal/p/anal_hexagon.c @@ -0,0 +1,107 @@ +/* radare - LGPL - Copyright 2018 - xvilka */ + +#include +#include +#include +#include +#include +#include "hexagon.h" +#include "hexagon_insn.h" +#include "hexagon_anal.h" + +static int hexagon_v6_op(RAnal *anal, RAnalOp *op, ut64 addr, const ut8 *buf, int len) { + HexInsn hi; + ut32 data = 0; + memset (op, 0, sizeof(RAnalOp)); + memset(&hi, 0, sizeof(hi)); + data = r_read_le32(buf); + int size = hexagon_disasm_instruction(data, &hi); + op->size = size; + if (size <= 0) { + return size; + } + + op->addr = addr; + op->jump = op->fail = -1; + op->ptr = op->val = -1; + int ret = hexagon_anal_instruction(&hi, op); + return ret; +} + +static int set_reg_profile(RAnal *anal) { + // TODO: Add missing registers + const char *p = + "=PC pc\n" + "=SP r29\n" + "=FP r30\n" + "=LR r31\n" + "=ZF z\n" + "=SF s\n" + "=OF ov\n" + "=CF cy\n" + + "gpr r0 .32 0 0\n" + "gpr r1 .32 4 0\n" + "gpr r2 .32 8 0\n" + "gpr r3 .32 12 0\n" + "gpr r4 .32 16 0\n" + "gpr r5 .32 20 0\n" + "gpr r6 .32 24 0\n" + "gpr r7 .32 28 0\n" + "gpr r8 .32 32 0\n" + "gpr r9 .32 36 0\n" + "gpr r10 .32 40 0\n" + "gpr r11 .32 44 0\n" + "gpr r12 .32 48 0\n" + "gpr r13 .32 52 0\n" + "gpr r14 .32 56 0\n" + "gpr r15 .32 60 0\n" + "gpr r16 .32 64 0\n" + "gpr r17 .32 68 0\n" + "gpr r18 .32 72 0\n" + "gpr r19 .32 76 0\n" + "gpr r20 .32 80 0\n" + "gpr r21 .32 84 0\n" + "gpr r22 .32 88 0\n" + "gpr r23 .32 92 0\n" + "gpr r24 .32 96 0\n" + "gpr r25 .32 100 0\n" + "gpr r26 .32 104 0\n" + "gpr r27 .32 108 0\n" + "gpr r28 .32 112 0\n" + "gpr r29 .32 116 0\n" + "gpr r30 .32 120 0\n" + "gpr r31 .32 124 0\n" + "gpr pc .32 128 0\n" + + "gpr psw .32 132 0\n" + "gpr np .1 132.16 0\n" + "gpr ep .1 132.17 0\n" + "gpr ae .1 132.18 0\n" + "gpr id .1 132.19 0\n" + "flg cy .1 132.28 0\n" + "flg ov .1 132.29 0\n" + "flg s .1 132.30 0\n" + "flg z .1 132.31 0\n"; + + return r_reg_set_profile_string (anal->reg, p); +} + +RAnalPlugin r_anal_plugin_hexagon = { + .name = "hexagon", + .desc = "Qualcomm Hexagon (QDSP6) V6", + .license = "LGPL3", + .arch = "hexagon", + .bits = 32, + .op = hexagon_v6_op, + .esil = true, + .set_reg_profile = set_reg_profile, +}; + +#ifndef CORELIB +RLibStruct radare_plugin = { + .type = R_LIB_TYPE_ANAL, + .data = &r_anal_plugin_hexagon_v6, + .version = R2_VERSION +}; +#endif diff --git a/libr/anal/p/hexagon.mk b/libr/anal/p/hexagon.mk new file mode 100644 index 0000000000..68c189fd84 --- /dev/null +++ b/libr/anal/p/hexagon.mk @@ -0,0 +1,16 @@ +OBJ_HEXAGON=anal_hexagon.o +OBJ_HEXAGON+=../../asm/arch/hexagon/hexagon.o +OBJ_HEXAGON+=../../asm/arch/hexagon/hexagon_disas.o +OBJ_HEXAGON+=../../anal/arch/hexagon/hexagon_anal.o + +CFLAGS +=-I../asm/arch/hexagon +CFLAGS +=-I../anal/arch/hexagon + +STATIC_OBJ+=${OBJ_HEXAGON} +TARGET_HEXAGON=anal_hexagon.${EXT_SO} + +ALL_TARGETS+=${TARGET_HEXAGON} + +${TARGET_HEXAGON}: ${OBJ_HEXAGON} + ${CC} $(call libname,anal_hexagon) ${LDFLAGS} ${CFLAGS} \ + -o $(TARGET_HEXAGON) $(OBJ_HEXAGON) diff --git a/libr/asm/arch/hexagon/hexagon.c b/libr/asm/arch/hexagon/hexagon.c new file mode 100644 index 0000000000..f07ed27641 --- /dev/null +++ b/libr/asm/arch/hexagon/hexagon.c @@ -0,0 +1,243 @@ +#include +#include +#include +#include +#include +#include +#include "hexagon.h" + +// TODO: Handle also control reg pairs +char* hex_get_cntl_reg(int opreg){ + switch (opreg) { + case HEX_REG_SA0: + return "SA0"; + case HEX_REG_LC0: + return "LC0"; + case HEX_REG_SA1: + return "SA1"; + case HEX_REG_LC1: + return "LC1"; + case HEX_REG_P: + return "P"; + case HEX_REG_M0: + return "M0"; + case HEX_REG_M1: + return "M1"; + case HEX_REG_USR: + return "USR"; + case HEX_REG_PC: + return "PC"; + case HEX_REG_UGP: + return "UGP"; + case HEX_REG_GP: + return "GP"; + case HEX_REG_CS0: + return "CS0"; + case HEX_REG_CS1: + return "CS1"; + case HEX_REG_UPCYCLELO: + return "UPCYCLELO"; + case HEX_REG_UPCYCLEHI: + return "UPCYCLEHI"; + case HEX_REG_FRAMELIMIT: + return "FRAMELIMIT"; + case HEX_REG_FRAMEKEY: + return "FRAMEKEY"; + case HEX_REG_PKTCOUNTLO: + return "PKTCOUNTLO"; + case HEX_REG_PKTCOUNTHI: + return "PKTCOUNTHI"; + case HEX_REG_UTIMERLO: + return "UTIMERLO"; + case HEX_REG_UTIMERHI: + return "UTIMERHI"; + default: + return ""; + } +} + +char tmp[5] = { 0 }; + +char* hex_get_sys_reg(int opreg) +{ + switch (opreg) { + case HEX_REG_SGP0: + return "SGP0"; + case HEX_REG_SGP1: + return "SGP1"; + case HEX_REG_STID: + return "STID"; + case HEX_REG_ELR: + return "ELR"; + case HEX_REG_BADVA0: + return "BADVA0"; + case HEX_REG_BADVA1: + return "BADVA1"; + case HEX_REG_SSR: + return "SSR"; + case HEX_REG_CCR: + return "CCR"; + case HEX_REG_HTID: + return "HTID"; + case HEX_REG_BADVA: + return "BADVA"; + case HEX_REG_IMASK: + return "IMASK"; + case HEX_REG_EVB: + return "EVB"; + case HEX_REG_MODECTL: + return "MODECTL"; + case HEX_REG_SYSCFG: + return "SYSCFG"; + case HEX_REG_IPEND: + return "IPEND"; + case HEX_REG_VID: + return "VID"; + case HEX_REG_IAD: + return "IAD"; + case HEX_REG_IEL: + return "IEL"; + case HEX_REG_IAHL: + return "IAHL"; + case HEX_REG_CFGBASE: + return "CFGBASE"; + case HEX_REG_DIAG: + return "DIAG"; + case HEX_REG_REV: + return "REV"; + case HEX_REG_PCYCLELO: + return "PCYCLELO"; + case HEX_REG_PCYCLEHI: + return "PCYCLEHI"; + case HEX_REG_ISDBST: + return "ISDBST"; + case HEX_REG_ISDBCFG0: + return "ISDBCFG0"; + case HEX_REG_ISDBCFG1: + return "ISDBCFG1"; + case HEX_REG_BRKPTPC0: + return "BRKPTPC0"; + case HEX_REG_BRKPTCFG0: + return "BRKPTCFG0"; + case HEX_REG_BRKPTPC1: + return "BRKPTPC1"; + case HEX_REG_BRKPTCFG1: + return "BRKPTCFG1"; + case HEX_REG_ISDBMBXIN: + return "ISDBMBXIN"; + case HEX_REG_ISDBMBXOUT: + return "ISDBMBXOUT"; + case HEX_REG_ISDBEN: + return "ISDBEN"; + case HEX_REG_ISDBGPR: + return "ISDBGPR"; + case HEX_REG_PMUCNT0: + return "PMUCNT0"; + case HEX_REG_PMUCNT1: + return "PMUCNT1"; + case HEX_REG_PMUCNT2: + return "PMUCNT2"; + case HEX_REG_PMUCNT3: + return "PMUCNT3"; + case HEX_REG_PMUEVTCFG: + return "PMUEVTCFG"; + case HEX_REG_PMUCFG: + return "PMUCFG"; + default: + sprintf(tmp, "S%d", opreg); + return tmp; + } +} + +char* hex_get_sub_reg(int opreg) +{ + switch (opreg) { + case HEX_SUB_REG_R0: + return "R0"; + case HEX_SUB_REG_R1: + return "R1"; + case HEX_SUB_REG_R2: + return "R2"; + case HEX_SUB_REG_R3: + return "R3"; + case HEX_SUB_REG_R4: + return "R4"; + case HEX_SUB_REG_R5: + return "R5"; + case HEX_SUB_REG_R6: + return "R6"; + case HEX_SUB_REG_R7: + return "R7"; + case HEX_SUB_REG_R16: + return "R16"; + case HEX_SUB_REG_R17: + return "R17"; + case HEX_SUB_REG_R18: + return "R18"; + case HEX_SUB_REG_R19: + return "R19"; + case HEX_SUB_REG_R20: + return "R20"; + case HEX_SUB_REG_R21: + return "R21"; + case HEX_SUB_REG_R22: + return "R22"; + case HEX_SUB_REG_R23: + return "R23"; + default: + return ""; + } +} + +char* hex_get_sub_regpair(int opreg) +{ + switch (opreg) { + case HEX_SUB_REGPAIR_R1_R0: + return "R1:R0"; + case HEX_SUB_REGPAIR_R3_R2: + return "R3:R2"; + case HEX_SUB_REGPAIR_R5_R4: + return "R5:R4"; + case HEX_SUB_REGPAIR_R7_R6: + return "R7:R6"; + case HEX_SUB_REGPAIR_R17_R16: + return "R17:R16"; + case HEX_SUB_REGPAIR_R19_R18: + return "R19:R18"; + case HEX_SUB_REGPAIR_R21_R20: + return "R21:R20"; + case HEX_SUB_REGPAIR_R23_R22: + return "R23:R22"; + default: + return ""; + } +} + +inline bool hex_if_duplex(uint32_t insn_word) +{ + if (insn_word & (3 << 14) == 0) { + return true; + } + return false; +} + +// Constant extender value +ut32 constant_extender = 1; + +void hex_op_extend(HexOp *op) +{ + if ((constant_extender != 1) && (op->type == HEX_OP_TYPE_IMM)) { + op->op.imm = ((op->op.imm) & 0x3F) | (constant_extender); + } + constant_extender = 1; +} + +void hex_op_extend_off(HexOp *op, int offset) +{ + if ((constant_extender != 1) && (op->type == HEX_OP_TYPE_IMM)) { + op->op.imm = (op->op.imm) >> offset; + hex_op_extend(op); + } +} + + diff --git a/libr/asm/arch/hexagon/hexagon.h b/libr/asm/arch/hexagon/hexagon.h new file mode 100644 index 0000000000..c98c55e287 --- /dev/null +++ b/libr/asm/arch/hexagon/hexagon.h @@ -0,0 +1,277 @@ +// Predicates - declare the predicate state +typedef enum { + HEX_NOPRED, // no conditional execution + HEX_PRED_TRUE, // if (Pd) ... + HEX_PRED_FALSE, // if (!Pd) ... + HEX_PRED_TRUE_NEW, // if (Pd.new) ... + HEX_PRED_FALSE_NEW, // if (!Pd.new) ... +} HexPred; + +// Pre/post-fixes, different types +typedef enum { + HEX_PF_RND = 1, // :rnd + HEX_PF_CRND = 1<<1, // :crnd + HEX_PF_RAW = 1<<2, // :raw + HEX_PF_CHOP = 1<<3, // :chop + HEX_PF_SAT = 1<<4, // :sat + HEX_PF_HI = 1<<5, // :hi + HEX_PF_LO = 1<<6, // :lo + HEX_PF_LSH1 = 1<<7, // :<<1 + HEX_PF_LSH16 = 1<<8, // :<<16 + HEX_PF_RSH1 = 1<<9, // :>>1 + HEX_PF_NEG = 1<<10, // :neg + HEX_PF_POS = 1<<11, // :pos + HEX_PF_SCALE = 1<<12, // :scale, for FMA instructions + HEX_PF_DEPRECATED = 1<<15, // :deprecated +} HexPf; + +typedef enum { + HEX_OP_TYPE_IMM, + HEX_OP_TYPE_REG, + HEX_OP_TYPE_PREDICATE, + HEX_OP_TYPE_CONTROL, + HEX_OP_TYPE_SYSTEM, + HEX_OP_TYPE_OPT, // Do not really use in the C code +} HexOpType; + +// Attributes - .H/.L, const extender +typedef enum { + HEX_OP_CONST_EXT = 1 << 0, // Constant extender marker for Immediate + HEX_OP_REG_HI = 1 << 1, // Rn.H marker + HEX_OP_REG_LO = 1 << 2, // Rn.L marker + HEX_OP_REG_PAIR = 1 << 3, // Is this a register pair? +} HexOpAttr; + +typedef struct { + ut8 type; + union { + ut8 reg; // + additional Hi or Lo selector // + additional shift // + additional :brev // + ut32 imm; + ut8 pred; // predicates - P0-P3 registers + ut8 cr; // control register + ut8 sys; // system control register + } op; + ut8 attr; +} HexOp; + +typedef struct { + int instruction; + ut32 mask; + HexPred predicate; // predicate set if set + ut16 pf; // additional prefixes (bitmap) + bool duplex; // is part of duplex container? + bool compound; // is part of compound instruction? + bool last; // is last in instruction packet? + int shift; // Optional shift left is it true? + ut8 op_count; + HexOp ops[4]; + char mnem[128]; // Instruction mnemonic +} HexInsn; + +// Instruction container (currently only 2 instructions) +// Can handle duplexes +typedef struct { + bool duplex; + HexInsn ins[2]; // Or make it pointer + size? +} HexInsnCont; + +// Instruction packet (Maximum - 4 instructions) +// Can handle up to 4 instructions or 1 duplex + 2 instructions +// Can have a loop marks +typedef struct { + bool loop0; // :endloop0 marker + bool loop1; // :endloop1 marker + int cont_cnt; + HexInsnCont ins[4]; // Or make it pointer + size? +} HexInsnPkt; + +typedef enum { + HEX_INSN_CLASS_CEXT = 0, // Constant extender + HEX_INSN_CLASS_J1 = 1, // Jump + HEX_INSN_CLASS_J2 = 2, // Jump + HEX_INSN_CLASS_LD_ST = 3, // Load/Store + HEX_INSN_CLASS_LD_ST_COND_GP = 4, // Load/Store conditional or GP relative + HEX_INSN_CLASS_J3 = 5, // Jump + HEX_INSN_CLASS_CR = 6, // Control register instructions + HEX_INSN_CLASS_ALU32 = 7, // ALU32 + HEX_INSN_CLASS_XTYPE = 8, // XTYPE + HEX_INSN_CLASS_LD = 9, // Just load instructions + HEX_INSN_CLASS_ST = 10, // Just store instructions + HEX_INSN_CLASS_ALU32_1 = 11, // ALU32 + HEX_INSN_CLASS_XTYPE_1 = 12, // XTYPE again + HEX_INSN_CLASS_XTYPE_2 = 13, // XTYPE one more time + HEX_INSN_CLASS_XTYPE_3 = 14, // And again, XTYPE + HEX_INSN_CLASS_ALU32_2 = 12, // ALU32 again +} HEX_INSN_CLASS; + +typedef enum { + HEX_REG_R0 = 0, + HEX_REG_R1 = 1, + HEX_REG_R2 = 2, + HEX_REG_R3 = 3, + HEX_REG_R4 = 4, + HEX_REG_R5 = 5, + HEX_REG_R6 = 6, + HEX_REG_R7 = 7, + HEX_REG_R8 = 8, + HEX_REG_R9 = 9, + HEX_REG_R10 = 10, + HEX_REG_R11 = 11, + HEX_REG_R12 = 12, + HEX_REG_R13 = 13, + HEX_REG_R14 = 14, + HEX_REG_R15 = 15, + HEX_REG_R16 = 16, + HEX_REG_R17 = 17, + HEX_REG_R18 = 18, + HEX_REG_R19 = 19, + HEX_REG_R20 = 20, + HEX_REG_R21 = 21, + HEX_REG_R22 = 22, + HEX_REG_R23 = 23, + HEX_REG_R24 = 24, + HEX_REG_R25 = 25, + HEX_REG_R26 = 26, + HEX_REG_R27 = 27, + HEX_REG_R28 = 28, + HEX_REG_R29 = 29, + HEX_REG_R30 = 30, + HEX_REG_R31 = 31, +} HEX_REG; + +// TODO: Also add regpair values + +// Control registers +typedef enum { + // Loop registers + HEX_REG_SA0 = 0, // C0 + HEX_REG_LC0 = 1, // C1 + HEX_REG_SA1 = 2, // C2 + HEX_REG_LC1 = 3, // C3 + HEX_REG_P = 4, // C4 - 4 of 8bit registers + // C5 is reserved + // Modifier registers + HEX_REG_M0 = 6, // C6 + HEX_REG_M1 = 7, // C7 + HEX_REG_USR = 8, // C8 // User Status Register + HEX_REG_PC = 9, // C9 // Program counter + HEX_REG_UGP = 10, // C10 // User General Pointer + HEX_REG_GP = 11, // C11 // Global Pointer + // Circular Start registers + HEX_REG_CS0 = 12, // C12 + HEX_REG_CS1 = 13, // C13 + // Cycle Count registers + HEX_REG_UPCYCLELO = 14, // C14 + HEX_REG_UPCYCLEHI = 15, // C15 + HEX_REG_FRAMELIMIT = 16, // C16 // Stack Bounds register + HEX_REG_FRAMEKEY = 17, // C17 // Stack Smash register + // Packet Count registers + HEX_REG_PKTCOUNTLO = 18, // C18 + HEX_REG_PKTCOUNTHI = 19, // C19 + // C20 - C29 are reserved + // Qtimer registers + HEX_REG_UTIMERLO = 30, // C30 + HEX_REG_UTIMERHI = 31, // C31 +} HEX_CR_REG; + +// Supervisor control registers +typedef enum { + HEX_REG_SGP0 = 0, // S0 + HEX_REG_SGP1 = 1, // S1 + HEX_REG_STID = 2, // S2 + HEX_REG_ELR = 3, // S3 + HEX_REG_BADVA0 = 4, // S4 + HEX_REG_BADVA1 = 5, // S5 + HEX_REG_SSR = 6, // S6 + HEX_REG_CCR = 7, // S7 + HEX_REG_HTID = 8, // S8 + HEX_REG_BADVA = 9, // S9 + HEX_REG_IMASK = 10, // S10 + // S11 - S15 are reserved + HEX_REG_EVB = 16, // S16 + HEX_REG_MODECTL = 17, // S17 + HEX_REG_SYSCFG = 18, // S18 + // S19 is reserved + HEX_REG_IPEND = 20, // S20 + HEX_REG_VID = 21, // S21 + HEX_REG_IAD = 22, // S22 + // S23 is reserved + HEX_REG_IEL = 24, // S24 + // S25 is reserved + HEX_REG_IAHL = 26, // S26 + HEX_REG_CFGBASE = 27, // S27 + HEX_REG_DIAG = 28, // S28 + HEX_REG_REV = 29, // S29 + HEX_REG_PCYCLELO = 30, // S30 + HEX_REG_PCYCLEHI = 31, // S31 + HEX_REG_ISDBST = 32, // S32 + HEX_REG_ISDBCFG0 = 33, // S33 + HEX_REG_ISDBCFG1 = 34, // S34 + // S35 is reserved + HEX_REG_BRKPTPC0 = 36, // S36 + HEX_REG_BRKPTCFG0 = 37, // S37 + HEX_REG_BRKPTPC1 = 38, // S38 + HEX_REG_BRKPTCFG1 = 39, // S39 + HEX_REG_ISDBMBXIN = 40, // S40 + HEX_REG_ISDBMBXOUT = 41, // S41 + HEX_REG_ISDBEN = 42, // S42 + HEX_REG_ISDBGPR = 43, // S43 + // S44 - S47 are reserved + HEX_REG_PMUCNT0 = 48, // S48 + HEX_REG_PMUCNT1 = 49, // S49 + HEX_REG_PMUCNT2 = 50, // S50 + HEX_REG_PMUCNT3 = 51, // S51 + HEX_REG_PMUEVTCFG = 52, // S52 + HEX_REG_PMUCFG = 53, // S53 + // S54 - S63 are reserved +} HEX_SYSCR_REG; + +// Here are the register field values for subinstructions + +typedef enum { + HEX_SUB_REG_R0 = 0, // 0b0000 + HEX_SUB_REG_R1 = 1, // 0b0001 + HEX_SUB_REG_R2 = 2, // 0b0010 + HEX_SUB_REG_R3 = 3, // 0b0011 + HEX_SUB_REG_R4 = 4, // 0b0100 + HEX_SUB_REG_R5 = 5, // 0b0101 + HEX_SUB_REG_R6 = 6, // 0b0110 + HEX_SUB_REG_R7 = 7, // 0b0111 + HEX_SUB_REG_R16 = 8, // 0b1000 + HEX_SUB_REG_R17 = 9, // 0b1001 + HEX_SUB_REG_R18 = 10, // 0b1010 + HEX_SUB_REG_R19 = 11, // 0b1011 + HEX_SUB_REG_R20 = 12, // 0b1100 + HEX_SUB_REG_R21 = 13, // 0b1101 + HEX_SUB_REG_R22 = 14, // 0b1110 + HEX_SUB_REG_R23 = 15, // 0b1111 +} HEX_SUB_REG; + + +typedef enum { + HEX_SUB_REGPAIR_R1_R0 = 0, // 0b000 + HEX_SUB_REGPAIR_R3_R2 = 1, // 0b001 + HEX_SUB_REGPAIR_R5_R4 = 2, // 0b010 + HEX_SUB_REGPAIR_R7_R6 = 3, // 0b011 + HEX_SUB_REGPAIR_R17_R16 = 4, // 0b100 + HEX_SUB_REGPAIR_R19_R18 = 5, // 0b101 + HEX_SUB_REGPAIR_R21_R20 = 6, // 0b110 + HEX_SUB_REGPAIR_R23_R22 = 7, // 0b111 +} HEX_SUB_REGPAIR; + + +#define BIT_MASK(len) (BIT(len)-1) +#define BF_MASK(start, len) (BIT_MASK(len)<<(start)) +#define BF_PREP(x, start, len) (((x)&BIT_MASK(len))<<(start)) +#define BF_GET(y, start, len) (((y)>>(start)) & BIT_MASK(len)) +#define BF_GETB(y, start, end) (BF_GET((y), (start), (end) - (start) + 1) + +char* hex_get_cntl_reg(int opreg); +char* hex_get_sys_reg(int opreg); +char* hex_get_sub_reg(int opreg); +char* hex_get_sub_regpair(int opreg); +bool hex_if_duplex(ut32 insn_word); +void hex_op_extend(HexOp *op); +void hex_op_extend_off(HexOp *op, int offset); +int hexagon_disasm_instruction(ut32 hi_u32, HexInsn *hi); + diff --git a/libr/asm/arch/hexagon/hexagon_disas.c b/libr/asm/arch/hexagon/hexagon_disas.c new file mode 100644 index 0000000000..afbf17eead --- /dev/null +++ b/libr/asm/arch/hexagon/hexagon_disas.c @@ -0,0 +1,45275 @@ +#include +#include +#include +#include +#include +#include "hexagon.h" +#include "hexagon_insn.h" + +extern ut32 constant_extender; + +int hexagon_disasm_instruction(ut32 hi_u32, HexInsn *hi) { + // DUPLEXES + if (((hi_u32 >> 14) & 0x3) == 0) { + switch ((((hi_u32 >> 29) & 0xF) << 1) | ((hi_u32 >> 13) & 1)) { + case 0x0: { + if ((hi_u32 & 0xf000f000) == 0x10001000) { + // Instruction: 0: 0001IIIIuuuueeee0001iiiissssdddd | Re = memub (Ru + #U4:0) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMUB__RS____U4_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f000) == 0x1000) { + // Instruction: 0: 0000IIIIuuuueeee0001iiiissssdddd | Re = memw (Ru + #U4:2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMUB__RS____U4_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f000) == 0x0) { + // Instruction: 0: 0000IIIIuuuueeee0000iiiissssdddd | Re = memw (Ru + #U4:2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMW__RS____U4_2_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + break; + } + case 0x1: { + if ((hi_u32 & 0xf000ffc4) == 0x10003f40) { + // Instruction: 1: 0001iiiissssdddd0011111101---0-- | Rd = memub (Rs + #u4:0) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc4) == 0x10003f00) { + // Instruction: 1: 0001iiiissssdddd0011111100---0-- | Rd = memub (Rs + #u4:0) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____DEALLOCFRAME; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003f45) { + // Instruction: 1: 0001iiiissssdddd0011111101---101 | Rd = memub (Rs + #u4:0) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003fc5) { + // Instruction: 1: 0001iiiissssdddd0011111111---101 | Rd = memub (Rs + #u4:0) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003f47) { + // Instruction: 1: 0001iiiissssdddd0011111101---111 | Rd = memub (Rs + #u4:0) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003fc7) { + // Instruction: 1: 0001iiiissssdddd0011111111---111 | Rd = memub (Rs + #u4:0) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003f44) { + // Instruction: 1: 0001iiiissssdddd0011111101---100 | Rd = memub (Rs + #u4:0) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003fc4) { + // Instruction: 1: 0001iiiissssdddd0011111111---100 | Rd = memub (Rs + #u4:0) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003f46) { + // Instruction: 1: 0001iiiissssdddd0011111101---110 | Rd = memub (Rs + #u4:0) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x10003fc6) { + // Instruction: 1: 0001iiiissssdddd0011111111---110 | Rd = memub (Rs + #u4:0) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc4) == 0x10003fc0) { + // Instruction: 1: 0001iiiissssdddd0011111111---0-- | Rd = memub (Rs + #u4:0) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc4) == 0x3f40) { + // Instruction: 1: 0000iiiissssdddd0011111101---0-- | Rd = memw (Rs + #u4:2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc4) == 0x3f00) { + // Instruction: 1: 0000iiiissssdddd0011111100---0-- | Rd = memw (Rs + #u4:2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____DEALLOCFRAME; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3f45) { + // Instruction: 1: 0000iiiissssdddd0011111101---101 | Rd = memw (Rs + #u4:2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3fc5) { + // Instruction: 1: 0000iiiissssdddd0011111111---101 | Rd = memw (Rs + #u4:2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3f47) { + // Instruction: 1: 0000iiiissssdddd0011111101---111 | Rd = memw (Rs + #u4:2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3fc7) { + // Instruction: 1: 0000iiiissssdddd0011111111---111 | Rd = memw (Rs + #u4:2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3f44) { + // Instruction: 1: 0000iiiissssdddd0011111101---100 | Rd = memw (Rs + #u4:2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3fc4) { + // Instruction: 1: 0000iiiissssdddd0011111111---100 | Rd = memw (Rs + #u4:2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3f46) { + // Instruction: 1: 0000iiiissssdddd0011111101---110 | Rd = memw (Rs + #u4:2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc7) == 0x3fc6) { + // Instruction: 1: 0000iiiissssdddd0011111111---110 | Rd = memw (Rs + #u4:2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000ffc4) == 0x3fc0) { + // Instruction: 1: 0000iiiissssdddd0011111111---0-- | Rd = memw (Rs + #u4:2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0x10003c00) { + // Instruction: 1: 0001IIIIsssseeee0011110iiiiidddd | Re = memub (Rs + #U4:0) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RS____U4_0____RD___MEMW__SP____U5_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0x10003e00) { + // Instruction: 1: 0001IIIIsssseeee00111110iiiiiddd | Re = memub (Rs + #U4:0) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RS____U4_0____RDD___MEMD__SP____U5_3_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x10003000) { + // Instruction: 1: 0001IIIIuuuueeee00110iiissssdddd | Re = memub (Ru + #U4:0) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMB__RS____U3_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x10002000) { + // Instruction: 1: 0001IIIIuuuueeee00100iiissssdddd | Re = memub (Ru + #U4:0) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x10002800) { + // Instruction: 1: 0001IIIIuuuueeee00101iiissssdddd | Re = memub (Ru + #U4:0) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMUH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0x3c00) { + // Instruction: 1: 0000IIIIsssseeee0011110iiiiidddd | Re = memw (Rs + #U4:2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RS____U4_2____RD___MEMW__SP____U5_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0x3e00) { + // Instruction: 1: 0000IIIIsssseeee00111110iiiiiddd | Re = memw (Rs + #U4:2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RS____U4_2____RDD___MEMD__SP____U5_3_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x3000) { + // Instruction: 1: 0000IIIIuuuueeee00110iiissssdddd | Re = memw (Ru + #U4:2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMB__RS____U3_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x2000) { + // Instruction: 1: 0000IIIIuuuueeee00100iiissssdddd | Re = memw (Ru + #U4:2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0x2800) { + // Instruction: 1: 0000IIIIuuuueeee00101iiissssdddd | Re = memw (Ru + #U4:2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMUH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + break; + } + case 0x2: { + if ((hi_u32 & 0xf800ffc4) == 0x30001f40) { + // Instruction: 2: 00110iiissssdddd0001111101---0-- | Rd = memb (Rs + #u3:0) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x30001f00) { + // Instruction: 2: 00110iiissssdddd0001111100---0-- | Rd = memb (Rs + #u3:0) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____DEALLOCFRAME; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001f45) { + // Instruction: 2: 00110iiissssdddd0001111101---101 | Rd = memb (Rs + #u3:0) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001fc5) { + // Instruction: 2: 00110iiissssdddd0001111111---101 | Rd = memb (Rs + #u3:0) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001f47) { + // Instruction: 2: 00110iiissssdddd0001111101---111 | Rd = memb (Rs + #u3:0) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001fc7) { + // Instruction: 2: 00110iiissssdddd0001111111---111 | Rd = memb (Rs + #u3:0) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001f44) { + // Instruction: 2: 00110iiissssdddd0001111101---100 | Rd = memb (Rs + #u3:0) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001fc4) { + // Instruction: 2: 00110iiissssdddd0001111111---100 | Rd = memb (Rs + #u3:0) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001f46) { + // Instruction: 2: 00110iiissssdddd0001111101---110 | Rd = memb (Rs + #u3:0) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x30001fc6) { + // Instruction: 2: 00110iiissssdddd0001111111---110 | Rd = memb (Rs + #u3:0) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x30001fc0) { + // Instruction: 2: 00110iiissssdddd0001111111---0-- | Rd = memb (Rs + #u3:0) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x20001f40) { + // Instruction: 2: 00100iiissssdddd0001111101---0-- | Rd = memh (Rs + #u3:1) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x20001f00) { + // Instruction: 2: 00100iiissssdddd0001111100---0-- | Rd = memh (Rs + #u3:1) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____DEALLOCFRAME; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001f45) { + // Instruction: 2: 00100iiissssdddd0001111101---101 | Rd = memh (Rs + #u3:1) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001fc5) { + // Instruction: 2: 00100iiissssdddd0001111111---101 | Rd = memh (Rs + #u3:1) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001f47) { + // Instruction: 2: 00100iiissssdddd0001111101---111 | Rd = memh (Rs + #u3:1) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001fc7) { + // Instruction: 2: 00100iiissssdddd0001111111---111 | Rd = memh (Rs + #u3:1) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001f44) { + // Instruction: 2: 00100iiissssdddd0001111101---100 | Rd = memh (Rs + #u3:1) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001fc4) { + // Instruction: 2: 00100iiissssdddd0001111111---100 | Rd = memh (Rs + #u3:1) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001f46) { + // Instruction: 2: 00100iiissssdddd0001111101---110 | Rd = memh (Rs + #u3:1) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x20001fc6) { + // Instruction: 2: 00100iiissssdddd0001111111---110 | Rd = memh (Rs + #u3:1) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x20001fc0) { + // Instruction: 2: 00100iiissssdddd0001111111---0-- | Rd = memh (Rs + #u3:1) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x28001f40) { + // Instruction: 2: 00101iiissssdddd0001111101---0-- | Rd = memuh (Rs + #u3:1) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x28001f00) { + // Instruction: 2: 00101iiissssdddd0001111100---0-- | Rd = memuh (Rs + #u3:1) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____DEALLOCFRAME; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001f45) { + // Instruction: 2: 00101iiissssdddd0001111101---101 | Rd = memuh (Rs + #u3:1) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001fc5) { + // Instruction: 2: 00101iiissssdddd0001111111---101 | Rd = memuh (Rs + #u3:1) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001f47) { + // Instruction: 2: 00101iiissssdddd0001111101---111 | Rd = memuh (Rs + #u3:1) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001fc7) { + // Instruction: 2: 00101iiissssdddd0001111111---111 | Rd = memuh (Rs + #u3:1) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001f44) { + // Instruction: 2: 00101iiissssdddd0001111101---100 | Rd = memuh (Rs + #u3:1) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0__DEALLOC_RETURN; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001fc4) { + // Instruction: 2: 00101iiissssdddd0001111111---100 | Rd = memuh (Rs + #u3:1) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0__JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001f46) { + // Instruction: 2: 00101iiissssdddd0001111101---110 | Rd = memuh (Rs + #u3:1) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x28001fc6) { + // Instruction: 2: 00101iiissssdddd0001111111---110 | Rd = memuh (Rs + #u3:1) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x28001fc0) { + // Instruction: 2: 00101iiissssdddd0001111111---0-- | Rd = memuh (Rs + #u3:1) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____JUMPR_LR; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc4) == 0x3c001f40) { + // Instruction: 2: 0011110iiiiidddd0001111101---0-- | Rd = memw (Sp + #u5:2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc4) == 0x3c001f00) { + // Instruction: 2: 0011110iiiiidddd0001111100---0-- | Rd = memw (Sp + #u5:2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001f45) { + // Instruction: 2: 0011110iiiiidddd0001111101---101 | Rd = memw (Sp + #u5:2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001fc5) { + // Instruction: 2: 0011110iiiiidddd0001111111---101 | Rd = memw (Sp + #u5:2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001f47) { + // Instruction: 2: 0011110iiiiidddd0001111101---111 | Rd = memw (Sp + #u5:2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001fc7) { + // Instruction: 2: 0011110iiiiidddd0001111111---111 | Rd = memw (Sp + #u5:2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001f44) { + // Instruction: 2: 0011110iiiiidddd0001111101---100 | Rd = memw (Sp + #u5:2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001fc4) { + // Instruction: 2: 0011110iiiiidddd0001111111---100 | Rd = memw (Sp + #u5:2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001f46) { + // Instruction: 2: 0011110iiiiidddd0001111101---110 | Rd = memw (Sp + #u5:2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc7) == 0x3c001fc6) { + // Instruction: 2: 0011110iiiiidddd0001111111---110 | Rd = memw (Sp + #u5:2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00ffc4) == 0x3c001fc0) { + // Instruction: 2: 0011110iiiiidddd0001111111---0-- | Rd = memw (Sp + #u5:2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x3e001f40) { + // Instruction: 2: 00111110iiiiiddd0001111101---0-- | Rdd = memd (Sp + #u5:3) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x3e001f00) { + // Instruction: 2: 00111110iiiiiddd0001111100---0-- | Rdd = memd (Sp + #u5:3) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001f45) { + // Instruction: 2: 00111110iiiiiddd0001111101---101 | Rdd = memd (Sp + #u5:3) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001fc5) { + // Instruction: 2: 00111110iiiiiddd0001111111---101 | Rdd = memd (Sp + #u5:3) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001f47) { + // Instruction: 2: 00111110iiiiiddd0001111101---111 | Rdd = memd (Sp + #u5:3) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001fc7) { + // Instruction: 2: 00111110iiiiiddd0001111111---111 | Rdd = memd (Sp + #u5:3) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001f44) { + // Instruction: 2: 00111110iiiiiddd0001111101---100 | Rdd = memd (Sp + #u5:3) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001fc4) { + // Instruction: 2: 00111110iiiiiddd0001111111---100 | Rdd = memd (Sp + #u5:3) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001f46) { + // Instruction: 2: 00111110iiiiiddd0001111101---110 | Rdd = memd (Sp + #u5:3) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x3e001fc6) { + // Instruction: 2: 00111110iiiiiddd0001111111---110 | Rdd = memd (Sp + #u5:3) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x3e001fc0) { + // Instruction: 2: 00111110iiiiiddd0001111111---0-- | Rdd = memd (Sp + #u5:3) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x30001c00) { + // Instruction: 2: 00110IIIsssseeee0001110iiiiidddd | Re = memb (Rs + #U3:0) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMB__RS____U3_0____RD___MEMW__SP____U5_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x30001e00) { + // Instruction: 2: 00110IIIsssseeee00011110iiiiiddd | Re = memb (Rs + #U3:0) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMB__RS____U3_0____RDD___MEMD__SP____U5_3_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x30001000) { + // Instruction: 2: 00110IIIuuuueeee00010iiissssdddd | Re = memb (Ru + #U3:0) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMB__RU____U3_0____RD___MEMB__RS____U3_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x20001c00) { + // Instruction: 2: 00100IIIsssseeee0001110iiiiidddd | Re = memh (Rs + #U3:1) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMH__RS____U3_1____RD___MEMW__SP____U5_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20001e00) { + // Instruction: 2: 00100IIIsssseeee00011110iiiiiddd | Re = memh (Rs + #U3:1) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMH__RS____U3_1____RDD___MEMD__SP____U5_3_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x20001000) { + // Instruction: 2: 00100IIIuuuueeee00010iiissssdddd | Re = memh (Ru + #U3:1) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMB__RS____U3_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x20000000) { + // Instruction: 2: 00100IIIuuuueeee00000iiissssdddd | Re = memh (Ru + #U3:1) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x20000800) { + // Instruction: 2: 00100IIIuuuueeee00001iiissssdddd | Re = memh (Ru + #U3:1) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMUH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x28001c00) { + // Instruction: 2: 00101IIIsssseeee0001110iiiiidddd | Re = memuh (Rs + #U3:1) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUH__RS____U3_1____RD___MEMW__SP____U5_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x28001e00) { + // Instruction: 2: 00101IIIsssseeee00011110iiiiiddd | Re = memuh (Rs + #U3:1) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUH__RS____U3_1____RDD___MEMD__SP____U5_3_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x28001000) { + // Instruction: 2: 00101IIIuuuueeee00010iiissssdddd | Re = memuh (Ru + #U3:1) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUH__RU____U3_1____RD___MEMB__RS____U3_0_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x28000800) { + // Instruction: 2: 00101IIIuuuueeee00001iiissssdddd | Re = memuh (Ru + #U3:1) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___MEMUH__RU____U3_1____RD___MEMUH__RS____U3_1_; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[5].type = HEX_OP_TYPE_IMM; + hi->ops[5].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hex_get_sub_reg(hi->ops[4].op.reg), hi->ops[5].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0x3c001c00) { + // Instruction: 2: 0011110IIIIIeeee0001110iiiiidddd | Re = memw (Sp + #U5:2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__SP____U5_2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0x3c001e00) { + // Instruction: 2: 0011110IIIIIeeee00011110iiiiiddd | Re = memw (Sp + #U5:2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___MEMW__SP____U5_2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x3e001e00) { + // Instruction: 2: 00111110IIIIIeee00011110iiiiiddd | Ree = memd (Sp + #U5:3) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___MEMD__SP____U5_3____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xffc4ffc7) == 0x3f001fc5) { + // Instruction: 2: 0011111100---0--0001111111---101 | deallocframe ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___IF___NOT__P0__JUMPR_LR; + hi->op_count = 0; + hi->duplex = true; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; if (! p0) jumpr Lr"); + break; + } + if ((hi_u32 & 0xffc4ffc7) == 0x3f001fc7) { + // Instruction: 2: 0011111100---0--0001111111---111 | deallocframe ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 0; + hi->duplex = true; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; if (! p0.new) jumpr:nt Lr"); + break; + } + if ((hi_u32 & 0xffc4ffc7) == 0x3f001fc4) { + // Instruction: 2: 0011111100---0--0001111111---100 | deallocframe ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___IF__P0__JUMPR_LR; + hi->op_count = 0; + hi->duplex = true; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; if (p0) jumpr Lr"); + break; + } + if ((hi_u32 & 0xffc4ffc7) == 0x3f001fc6) { + // Instruction: 2: 0011111100---0--0001111111---110 | deallocframe ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 0; + hi->duplex = true; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; if (p0.new) jumpr:nt Lr"); + break; + } + if ((hi_u32 & 0xffc4ffc4) == 0x3f001fc0) { + // Instruction: 2: 0011111100---0--0001111111---0-- | deallocframe ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___JUMPR_LR; + hi->op_count = 0; + hi->duplex = true; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; jumpr Lr"); + break; + } + break; + } + case 0x3: { + if ((hi_u32 & 0xfc00ff00) == 0x28003900) { + // Instruction: 3: 001010IIIIIIdddd00111001ssss--ii | Rd = #U6 ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD____U6___P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003800) { + // Instruction: 3: 001010iiiiiidddd00111000ssssxxxx | Rd = #u6 ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD____U6___RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003800) { + // Instruction: 3: 001010iiiiiidddd00111000ssssxxxx | Rd = #u6 ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD____U6___RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003800) { + // Instruction: 3: 00110000uuuudddd00111000ssssxxxx | Rd = Ru ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___RU___RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003800) { + // Instruction: 3: 00110000uuuudddd00111000ssssxxxx | Rd = Ru ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___RU___RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003900) { + // Instruction: 3: 00110000uuuudddd00111001ssss--ii | Rd = Ru ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___RU___P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003800) { + // Instruction: 3: 00110011uuuudddd00111000ssssxxxx | Rd = add (Ru, #-1) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003800) { + // Instruction: 3: 00110011uuuudddd00111000ssssxxxx | Rd = add (Ru, #-1) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003900) { + // Instruction: 3: 00110011uuuudddd00111001ssss--ii | Rd = add (Ru, #-1) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003800) { + // Instruction: 3: 00110001uuuudddd00111000ssssxxxx | Rd = add (Ru, #1) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003800) { + // Instruction: 3: 00110001uuuudddd00111000ssssxxxx | Rd = add (Ru, #1) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003900) { + // Instruction: 3: 00110001uuuudddd00111001ssss--ii | Rd = add (Ru, #1) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003900) { + // Instruction: 3: 001011IIIIIIdddd00111001ssss--ii | Rd = add (Sp, #U6:2) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003800) { + // Instruction: 3: 001011iiiiiidddd00111000ssssxxxx | Rd = add (Sp, #u6:2) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003800) { + // Instruction: 3: 001011iiiiiidddd00111000ssssxxxx | Rd = add (Sp, #u6:2) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003800) { + // Instruction: 3: 00110010uuuudddd00111000ssssxxxx | Rd = and (Ru, #1) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003800) { + // Instruction: 3: 00110010uuuudddd00111000ssssxxxx | Rd = and (Ru, #1) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003900) { + // Instruction: 3: 00110010uuuudddd00111001ssss--ii | Rd = and (Ru, #1) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x37003800) { + // Instruction: 3: 00110111uuuudddd00111000ssssxxxx | Rd = and (Ru, #255) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x37003800) { + // Instruction: 3: 00110111uuuudddd00111000ssssxxxx | Rd = and (Ru, #255) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x37003900) { + // Instruction: 3: 00110111uuuudddd00111001ssss--ii | Rd = and (Ru, #255) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003800) { + // Instruction: 3: 00110101uuuudddd00111000ssssxxxx | Rd = sxtb (Ru) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003800) { + // Instruction: 3: 00110101uuuudddd00111000ssssxxxx | Rd = sxtb (Ru) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003900) { + // Instruction: 3: 00110101uuuudddd00111001ssss--ii | Rd = sxtb (Ru) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003800) { + // Instruction: 3: 00110100uuuudddd00111000ssssxxxx | Rd = sxth (Ru) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003800) { + // Instruction: 3: 00110100uuuudddd00111000ssssxxxx | Rd = sxth (Ru) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003900) { + // Instruction: 3: 00110100uuuudddd00111001ssss--ii | Rd = sxth (Ru) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x36003800) { + // Instruction: 3: 00110110uuuudddd00111000ssssxxxx | Rd = zxth (Ru) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x36003800) { + // Instruction: 3: 00110110uuuudddd00111000ssssxxxx | Rd = zxth (Ru) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x36003900) { + // Instruction: 3: 00110110uuuudddd00111001ssss--ii | Rd = zxth (Ru) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe40fe40) == 0x3a003a00) { + // Instruction: 3: 0011101--0--eeee0011101--0--dddd | Re = #-1 ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD_____1; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fd18) == 0x3a003c00) { + // Instruction: 3: 0011101--0--eeee001111-0-ii00ddd | Re = #-1 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___0___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fd08) == 0x3a003d00) { + // Instruction: 3: 0011101--0--eeee001111-1ssss0ddd | Re = #-1 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___0__RS_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fd18) == 0x3a003c08) { + // Instruction: 3: 0011101--0--eeee001111-0-ii01ddd | Re = #-1 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___1___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fd18) == 0x3a003c10) { + // Instruction: 3: 0011101--0--eeee001111-0-ii10ddd | Re = #-1 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___2___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fd18) == 0x3a003c18) { + // Instruction: 3: 0011101--0--eeee001111-0-ii11ddd | Re = #-1 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___3___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fd08) == 0x3a003d08) { + // Instruction: 3: 0011101--0--eeee001111-1ssss1ddd | Re = #-1 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___COMBINE__RS___0_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fe70) == 0x3a003a70) { + // Instruction: 3: 0011101--0--eeee0011101--111dddd | Re = #-1 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE_____1___IF___NOT__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fe70) == 0x3a003a50) { + // Instruction: 3: 0011101--0--eeee0011101--101dddd | Re = #-1 ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE_____1___IF___NOT__P0_NEW__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fe70) == 0x3a003a60) { + // Instruction: 3: 0011101--0--eeee0011101--110dddd | Re = #-1 ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE_____1___IF__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe40fe70) == 0x3a003a40) { + // Instruction: 3: 0011101--0--eeee0011101--100dddd | Re = #-1 ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE_____1___IF__P0_NEW__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe40) == 0x28003a00) { + // Instruction: 3: 001010IIIIIIeeee0011101--0--dddd | Re = #U6 ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fc00) == 0x28002800) { + // Instruction: 3: 001010IIIIIIeeee001010iiiiiidddd | Re = #U6 ; Rd = #u6 + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD____U6; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f0) >> 4); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = 0x%x", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003300) { + // Instruction: 3: 001010IIIIIIeeee00110011ssssdddd | Re = #U6 ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003100) { + // Instruction: 3: 001010IIIIIIeeee00110001ssssdddd | Re = #U6 ; Rd = add (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___ADD__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = add (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fc00) == 0x28002c00) { + // Instruction: 3: 001010IIIIIIeeee001011iiiiiidddd | Re = #U6 ; Rd = add (Sp, #u6:2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___ADD__SP___U6_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = add (Sp, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003200) { + // Instruction: 3: 001010IIIIIIeeee00110010ssssdddd | Re = #U6 ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003700) { + // Instruction: 3: 001010IIIIIIeeee00110111ssssdddd | Re = #U6 ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x28003c00) { + // Instruction: 3: 001010IIIIIIeeee001111-0-ii00ddd | Re = #U6 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd08) == 0x28003d00) { + // Instruction: 3: 001010IIIIIIeeee001111-1ssss0ddd | Re = #U6 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x28003c08) { + // Instruction: 3: 001010IIIIIIeeee001111-0-ii01ddd | Re = #U6 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x28003c10) { + // Instruction: 3: 001010IIIIIIeeee001111-0-ii10ddd | Re = #U6 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x28003c18) { + // Instruction: 3: 001010IIIIIIeeee001111-0-ii11ddd | Re = #U6 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd08) == 0x28003d08) { + // Instruction: 3: 001010IIIIIIeeee001111-1ssss1ddd | Re = #U6 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x28003a70) { + // Instruction: 3: 001010IIIIIIeeee0011101--111dddd | Re = #U6 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE____U6___IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x28003a50) { + // Instruction: 3: 001010IIIIIIeeee0011101--101dddd | Re = #U6 ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE____U6___IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x28003a60) { + // Instruction: 3: 001010IIIIIIeeee0011101--110dddd | Re = #U6 ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE____U6___IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x28003a40) { + // Instruction: 3: 001010IIIIIIeeee0011101--100dddd | Re = #U6 ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE____U6___IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003000) { + // Instruction: 3: 001010iiiiiieeee00110000ssssdddd | Re = #u6 ; Rd = Rs + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___RS; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003500) { + // Instruction: 3: 001010iiiiiieeee00110101ssssdddd | Re = #u6 ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003400) { + // Instruction: 3: 001010iiiiiieeee00110100ssssdddd | Re = #u6 ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x28003600) { + // Instruction: 3: 001010iiiiiieeee00110110ssssdddd | Re = #u6 ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x30003a00) { + // Instruction: 3: 00110000sssseeee0011101--0--dddd | Re = Rs ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___RS___RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x30003c00) { + // Instruction: 3: 00110000sssseeee001111-0-ii00ddd | Re = Rs ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x30003c08) { + // Instruction: 3: 00110000sssseeee001111-0-ii01ddd | Re = Rs ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x30003c10) { + // Instruction: 3: 00110000sssseeee001111-0-ii10ddd | Re = Rs ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x30003c18) { + // Instruction: 3: 00110000sssseeee001111-0-ii11ddd | Re = Rs ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x30003a70) { + // Instruction: 3: 00110000sssseeee0011101--111dddd | Re = Rs ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___RS___IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x30003a50) { + // Instruction: 3: 00110000sssseeee0011101--101dddd | Re = Rs ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___RS___IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x30003a60) { + // Instruction: 3: 00110000sssseeee0011101--110dddd | Re = Rs ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___RS___IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x30003a40) { + // Instruction: 3: 00110000sssseeee0011101--100dddd | Re = Rs ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___RS___IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003000) { + // Instruction: 3: 00110000uuuueeee00110000ssssdddd | Re = Ru ; Rd = Rs + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___RS; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003300) { + // Instruction: 3: 00110000uuuueeee00110011ssssdddd | Re = Ru ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003100) { + // Instruction: 3: 00110000uuuueeee00110001ssssdddd | Re = Ru ; Rd = add (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___ADD__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = add (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003200) { + // Instruction: 3: 00110000uuuueeee00110010ssssdddd | Re = Ru ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003700) { + // Instruction: 3: 00110000uuuueeee00110111ssssdddd | Re = Ru ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003500) { + // Instruction: 3: 00110000uuuueeee00110101ssssdddd | Re = Ru ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003400) { + // Instruction: 3: 00110000uuuueeee00110100ssssdddd | Re = Ru ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x30003600) { + // Instruction: 3: 00110000uuuueeee00110110ssssdddd | Re = Ru ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x30003d00) { + // Instruction: 3: 00110000uuuueeee001111-1ssss0ddd | Re = Ru ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x30003d08) { + // Instruction: 3: 00110000uuuueeee001111-1ssss1ddd | Re = Ru ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x33003a00) { + // Instruction: 3: 00110011sssseeee0011101--0--dddd | Re = add (Rs, #-1) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x33003c00) { + // Instruction: 3: 00110011sssseeee001111-0-ii00ddd | Re = add (Rs, #-1) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x33003c08) { + // Instruction: 3: 00110011sssseeee001111-0-ii01ddd | Re = add (Rs, #-1) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x33003c10) { + // Instruction: 3: 00110011sssseeee001111-0-ii10ddd | Re = add (Rs, #-1) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x33003c18) { + // Instruction: 3: 00110011sssseeee001111-0-ii11ddd | Re = add (Rs, #-1) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x33003a70) { + // Instruction: 3: 00110011sssseeee0011101--111dddd | Re = add (Rs, #-1) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x33003a50) { + // Instruction: 3: 00110011sssseeee0011101--101dddd | Re = add (Rs, #-1) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x33003a60) { + // Instruction: 3: 00110011sssseeee0011101--110dddd | Re = add (Rs, #-1) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x33003a40) { + // Instruction: 3: 00110011sssseeee0011101--100dddd | Re = add (Rs, #-1) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x31003a00) { + // Instruction: 3: 00110001sssseeee0011101--0--dddd | Re = add (Rs, #1) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x31003c00) { + // Instruction: 3: 00110001sssseeee001111-0-ii00ddd | Re = add (Rs, #1) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x31003c08) { + // Instruction: 3: 00110001sssseeee001111-0-ii01ddd | Re = add (Rs, #1) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x31003c10) { + // Instruction: 3: 00110001sssseeee001111-0-ii10ddd | Re = add (Rs, #1) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x31003c18) { + // Instruction: 3: 00110001sssseeee001111-0-ii11ddd | Re = add (Rs, #1) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x31003a70) { + // Instruction: 3: 00110001sssseeee0011101--111dddd | Re = add (Rs, #1) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x31003a50) { + // Instruction: 3: 00110001sssseeee0011101--101dddd | Re = add (Rs, #1) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x31003a60) { + // Instruction: 3: 00110001sssseeee0011101--110dddd | Re = add (Rs, #1) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x31003a40) { + // Instruction: 3: 00110001sssseeee0011101--100dddd | Re = add (Rs, #1) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003300) { + // Instruction: 3: 00110011uuuueeee00110011ssssdddd | Re = add (Ru, #-1) ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003700) { + // Instruction: 3: 00110011uuuueeee00110111ssssdddd | Re = add (Ru, #-1) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003500) { + // Instruction: 3: 00110011uuuueeee00110101ssssdddd | Re = add (Ru, #-1) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003400) { + // Instruction: 3: 00110011uuuueeee00110100ssssdddd | Re = add (Ru, #-1) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x33003600) { + // Instruction: 3: 00110011uuuueeee00110110ssssdddd | Re = add (Ru, #-1) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x33003d00) { + // Instruction: 3: 00110011uuuueeee001111-1ssss0ddd | Re = add (Ru, #-1) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x33003d08) { + // Instruction: 3: 00110011uuuueeee001111-1ssss1ddd | Re = add (Ru, #-1) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003300) { + // Instruction: 3: 00110001uuuueeee00110011ssssdddd | Re = add (Ru, #1) ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003100) { + // Instruction: 3: 00110001uuuueeee00110001ssssdddd | Re = add (Ru, #1) ; Rd = add (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ADD__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = add (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003200) { + // Instruction: 3: 00110001uuuueeee00110010ssssdddd | Re = add (Ru, #1) ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003700) { + // Instruction: 3: 00110001uuuueeee00110111ssssdddd | Re = add (Ru, #1) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003500) { + // Instruction: 3: 00110001uuuueeee00110101ssssdddd | Re = add (Ru, #1) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003400) { + // Instruction: 3: 00110001uuuueeee00110100ssssdddd | Re = add (Ru, #1) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x31003600) { + // Instruction: 3: 00110001uuuueeee00110110ssssdddd | Re = add (Ru, #1) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x31003d00) { + // Instruction: 3: 00110001uuuueeee001111-1ssss0ddd | Re = add (Ru, #1) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x31003d08) { + // Instruction: 3: 00110001uuuueeee001111-1ssss1ddd | Re = add (Ru, #1) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe40) == 0x2c003a00) { + // Instruction: 3: 001011IIIIIIeeee0011101--0--dddd | Re = add (Sp, #U6:2) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003300) { + // Instruction: 3: 001011IIIIIIeeee00110011ssssdddd | Re = add (Sp, #U6:2) ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003100) { + // Instruction: 3: 001011IIIIIIeeee00110001ssssdddd | Re = add (Sp, #U6:2) ; Rd = add (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = add (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fc00) == 0x2c002c00) { + // Instruction: 3: 001011IIIIIIeeee001011iiiiiidddd | Re = add (Sp, #U6:2) ; Rd = add (Sp, #u6:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__SP___U6_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = add (Sp, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003200) { + // Instruction: 3: 001011IIIIIIeeee00110010ssssdddd | Re = add (Sp, #U6:2) ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003700) { + // Instruction: 3: 001011IIIIIIeeee00110111ssssdddd | Re = add (Sp, #U6:2) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x2c003c00) { + // Instruction: 3: 001011IIIIIIeeee001111-0-ii00ddd | Re = add (Sp, #U6:2) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd08) == 0x2c003d00) { + // Instruction: 3: 001011IIIIIIeeee001111-1ssss0ddd | Re = add (Sp, #U6:2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x2c003c08) { + // Instruction: 3: 001011IIIIIIeeee001111-0-ii01ddd | Re = add (Sp, #U6:2) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x2c003c10) { + // Instruction: 3: 001011IIIIIIeeee001111-0-ii10ddd | Re = add (Sp, #U6:2) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd18) == 0x2c003c18) { + // Instruction: 3: 001011IIIIIIeeee001111-0-ii11ddd | Re = add (Sp, #U6:2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fd08) == 0x2c003d08) { + // Instruction: 3: 001011IIIIIIeeee001111-1ssss1ddd | Re = add (Sp, #U6:2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x2c003a70) { + // Instruction: 3: 001011IIIIIIeeee0011101--111dddd | Re = add (Sp, #U6:2) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x2c003a50) { + // Instruction: 3: 001011IIIIIIeeee0011101--101dddd | Re = add (Sp, #U6:2) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x2c003a60) { + // Instruction: 3: 001011IIIIIIeeee0011101--110dddd | Re = add (Sp, #U6:2) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe70) == 0x2c003a40) { + // Instruction: 3: 001011IIIIIIeeee0011101--100dddd | Re = add (Sp, #U6:2) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003000) { + // Instruction: 3: 001011iiiiiieeee00110000ssssdddd | Re = add (Sp, #u6:2) ; Rd = Rs + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___RS; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003500) { + // Instruction: 3: 001011iiiiiieeee00110101ssssdddd | Re = add (Sp, #u6:2) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003400) { + // Instruction: 3: 001011iiiiiieeee00110100ssssdddd | Re = add (Sp, #u6:2) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x2c003600) { + // Instruction: 3: 001011iiiiiieeee00110110ssssdddd | Re = add (Sp, #u6:2) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x32003a00) { + // Instruction: 3: 00110010sssseeee0011101--0--dddd | Re = and (Rs, #1) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x32003c00) { + // Instruction: 3: 00110010sssseeee001111-0-ii00ddd | Re = and (Rs, #1) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x32003c08) { + // Instruction: 3: 00110010sssseeee001111-0-ii01ddd | Re = and (Rs, #1) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x32003c10) { + // Instruction: 3: 00110010sssseeee001111-0-ii10ddd | Re = and (Rs, #1) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x32003c18) { + // Instruction: 3: 00110010sssseeee001111-0-ii11ddd | Re = and (Rs, #1) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x32003a70) { + // Instruction: 3: 00110010sssseeee0011101--111dddd | Re = and (Rs, #1) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x32003a50) { + // Instruction: 3: 00110010sssseeee0011101--101dddd | Re = and (Rs, #1) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x32003a60) { + // Instruction: 3: 00110010sssseeee0011101--110dddd | Re = and (Rs, #1) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x32003a40) { + // Instruction: 3: 00110010sssseeee0011101--100dddd | Re = and (Rs, #1) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x37003a00) { + // Instruction: 3: 00110111sssseeee0011101--0--dddd | Re = and (Rs, #255) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x37003c00) { + // Instruction: 3: 00110111sssseeee001111-0-ii00ddd | Re = and (Rs, #255) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x37003c08) { + // Instruction: 3: 00110111sssseeee001111-0-ii01ddd | Re = and (Rs, #255) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x37003c10) { + // Instruction: 3: 00110111sssseeee001111-0-ii10ddd | Re = and (Rs, #255) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x37003c18) { + // Instruction: 3: 00110111sssseeee001111-0-ii11ddd | Re = and (Rs, #255) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x37003a70) { + // Instruction: 3: 00110111sssseeee0011101--111dddd | Re = and (Rs, #255) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x37003a50) { + // Instruction: 3: 00110111sssseeee0011101--101dddd | Re = and (Rs, #255) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x37003a60) { + // Instruction: 3: 00110111sssseeee0011101--110dddd | Re = and (Rs, #255) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x37003a40) { + // Instruction: 3: 00110111sssseeee0011101--100dddd | Re = and (Rs, #255) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003300) { + // Instruction: 3: 00110010uuuueeee00110011ssssdddd | Re = and (Ru, #1) ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003200) { + // Instruction: 3: 00110010uuuueeee00110010ssssdddd | Re = and (Ru, #1) ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003700) { + // Instruction: 3: 00110010uuuueeee00110111ssssdddd | Re = and (Ru, #1) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003500) { + // Instruction: 3: 00110010uuuueeee00110101ssssdddd | Re = and (Ru, #1) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003400) { + // Instruction: 3: 00110010uuuueeee00110100ssssdddd | Re = and (Ru, #1) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x32003600) { + // Instruction: 3: 00110010uuuueeee00110110ssssdddd | Re = and (Ru, #1) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x32003d00) { + // Instruction: 3: 00110010uuuueeee001111-1ssss0ddd | Re = and (Ru, #1) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x32003d08) { + // Instruction: 3: 00110010uuuueeee001111-1ssss1ddd | Re = and (Ru, #1) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x37003700) { + // Instruction: 3: 00110111uuuueeee00110111ssssdddd | Re = and (Ru, #255) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x37003d00) { + // Instruction: 3: 00110111uuuueeee001111-1ssss0ddd | Re = and (Ru, #255) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x37003d08) { + // Instruction: 3: 00110111uuuueeee001111-1ssss1ddd | Re = and (Ru, #255) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x35003a00) { + // Instruction: 3: 00110101sssseeee0011101--0--dddd | Re = sxtb (Rs) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x35003c00) { + // Instruction: 3: 00110101sssseeee001111-0-ii00ddd | Re = sxtb (Rs) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x35003c08) { + // Instruction: 3: 00110101sssseeee001111-0-ii01ddd | Re = sxtb (Rs) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x35003c10) { + // Instruction: 3: 00110101sssseeee001111-0-ii10ddd | Re = sxtb (Rs) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x35003c18) { + // Instruction: 3: 00110101sssseeee001111-0-ii11ddd | Re = sxtb (Rs) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x35003a70) { + // Instruction: 3: 00110101sssseeee0011101--111dddd | Re = sxtb (Rs) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x35003a50) { + // Instruction: 3: 00110101sssseeee0011101--101dddd | Re = sxtb (Rs) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x35003a60) { + // Instruction: 3: 00110101sssseeee0011101--110dddd | Re = sxtb (Rs) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x35003a40) { + // Instruction: 3: 00110101sssseeee0011101--100dddd | Re = sxtb (Rs) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003700) { + // Instruction: 3: 00110101uuuueeee00110111ssssdddd | Re = sxtb (Ru) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003500) { + // Instruction: 3: 00110101uuuueeee00110101ssssdddd | Re = sxtb (Ru) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x35003600) { + // Instruction: 3: 00110101uuuueeee00110110ssssdddd | Re = sxtb (Ru) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x35003d00) { + // Instruction: 3: 00110101uuuueeee001111-1ssss0ddd | Re = sxtb (Ru) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x35003d08) { + // Instruction: 3: 00110101uuuueeee001111-1ssss1ddd | Re = sxtb (Ru) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x34003a00) { + // Instruction: 3: 00110100sssseeee0011101--0--dddd | Re = sxth (Rs) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x34003c00) { + // Instruction: 3: 00110100sssseeee001111-0-ii00ddd | Re = sxth (Rs) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x34003c08) { + // Instruction: 3: 00110100sssseeee001111-0-ii01ddd | Re = sxth (Rs) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x34003c10) { + // Instruction: 3: 00110100sssseeee001111-0-ii10ddd | Re = sxth (Rs) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x34003c18) { + // Instruction: 3: 00110100sssseeee001111-0-ii11ddd | Re = sxth (Rs) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x34003a70) { + // Instruction: 3: 00110100sssseeee0011101--111dddd | Re = sxth (Rs) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x34003a50) { + // Instruction: 3: 00110100sssseeee0011101--101dddd | Re = sxth (Rs) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x34003a60) { + // Instruction: 3: 00110100sssseeee0011101--110dddd | Re = sxth (Rs) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x34003a40) { + // Instruction: 3: 00110100sssseeee0011101--100dddd | Re = sxth (Rs) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003700) { + // Instruction: 3: 00110100uuuueeee00110111ssssdddd | Re = sxth (Ru) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003500) { + // Instruction: 3: 00110100uuuueeee00110101ssssdddd | Re = sxth (Ru) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003400) { + // Instruction: 3: 00110100uuuueeee00110100ssssdddd | Re = sxth (Ru) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x34003600) { + // Instruction: 3: 00110100uuuueeee00110110ssssdddd | Re = sxth (Ru) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x34003d00) { + // Instruction: 3: 00110100uuuueeee001111-1ssss0ddd | Re = sxth (Ru) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x34003d08) { + // Instruction: 3: 00110100uuuueeee001111-1ssss1ddd | Re = sxth (Ru) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x36003a00) { + // Instruction: 3: 00110110sssseeee0011101--0--dddd | Re = zxth (Rs) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x36003c00) { + // Instruction: 3: 00110110sssseeee001111-0-ii00ddd | Re = zxth (Rs) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x36003c08) { + // Instruction: 3: 00110110sssseeee001111-0-ii01ddd | Re = zxth (Rs) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x36003c10) { + // Instruction: 3: 00110110sssseeee001111-0-ii10ddd | Re = zxth (Rs) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x36003c18) { + // Instruction: 3: 00110110sssseeee001111-0-ii11ddd | Re = zxth (Rs) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x36003a70) { + // Instruction: 3: 00110110sssseeee0011101--111dddd | Re = zxth (Rs) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x36003a50) { + // Instruction: 3: 00110110sssseeee0011101--101dddd | Re = zxth (Rs) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x36003a60) { + // Instruction: 3: 00110110sssseeee0011101--110dddd | Re = zxth (Rs) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x36003a40) { + // Instruction: 3: 00110110sssseeee0011101--100dddd | Re = zxth (Rs) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x36003700) { + // Instruction: 3: 00110110uuuueeee00110111ssssdddd | Re = zxth (Ru) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x36003600) { + // Instruction: 3: 00110110uuuueeee00110110ssssdddd | Re = zxth (Ru) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x36003d00) { + // Instruction: 3: 00110110uuuueeee001111-1ssss0ddd | Re = zxth (Ru) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x36003d08) { + // Instruction: 3: 00110110uuuueeee001111-1ssss1ddd | Re = zxth (Ru) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c003c00) { + // Instruction: 3: 001111-0-II00eee001111-0-ii00ddd | Ree = combine (#0, #U2) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (#0, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c003d00) { + // Instruction: 3: 001111-0-II00eee001111-1ssss0ddd | Ree = combine (#0, #U2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c003c08) { + // Instruction: 3: 001111-0-II00eee001111-0-ii01ddd | Ree = combine (#0, #U2) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (#1, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c003c10) { + // Instruction: 3: 001111-0-II00eee001111-0-ii10ddd | Ree = combine (#0, #U2) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c003c18) { + // Instruction: 3: 001111-0-II00eee001111-0-ii11ddd | Ree = combine (#0, #U2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c003d08) { + // Instruction: 3: 001111-0-II00eee001111-1ssss1ddd | Ree = combine (#0, #U2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fd08) == 0x3d003d00) { + // Instruction: 3: 001111-1uuuu0eee001111-1ssss0ddd | Ree = combine (#0, Ru) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = combine (#0, %s)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fd08) == 0x3d003d08) { + // Instruction: 3: 001111-1uuuu0eee001111-1ssss1ddd | Ree = combine (#0, Ru) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c083d00) { + // Instruction: 3: 001111-0-II01eee001111-1ssss0ddd | Ree = combine (#1, #U2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c083c08) { + // Instruction: 3: 001111-0-II01eee001111-0-ii01ddd | Ree = combine (#1, #U2) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = combine (#1, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c083c10) { + // Instruction: 3: 001111-0-II01eee001111-0-ii10ddd | Ree = combine (#1, #U2) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c083c18) { + // Instruction: 3: 001111-0-II01eee001111-0-ii11ddd | Ree = combine (#1, #U2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c083d08) { + // Instruction: 3: 001111-0-II01eee001111-1ssss1ddd | Ree = combine (#1, #U2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c103d00) { + // Instruction: 3: 001111-0-II10eee001111-1ssss0ddd | Ree = combine (#2, #U2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c103c10) { + // Instruction: 3: 001111-0-II10eee001111-0-ii10ddd | Ree = combine (#2, #U2) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c103c18) { + // Instruction: 3: 001111-0-II10eee001111-0-ii11ddd | Ree = combine (#2, #U2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c103d08) { + // Instruction: 3: 001111-0-II10eee001111-1ssss1ddd | Ree = combine (#2, #U2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c183d00) { + // Instruction: 3: 001111-0-II11eee001111-1ssss0ddd | Ree = combine (#3, #U2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fd18) == 0x3c183c18) { + // Instruction: 3: 001111-0-II11eee001111-0-ii11ddd | Ree = combine (#3, #U2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fd08) == 0x3c183d08) { + // Instruction: 3: 001111-0-II11eee001111-1ssss1ddd | Ree = combine (#3, #U2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fd08) == 0x3d083d08) { + // Instruction: 3: 001111-1uuuu1eee001111-1ssss1ddd | Ree = combine (Ru, #0) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = combine (%s, #0)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x38003a00) { + // Instruction: 3: 00111000ssssxxxx0011101--0--dddd | Rx = add (Rs, Rx) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c00) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii00ddd | Rx = add (Rs, Rx) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c08) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii01ddd | Rx = add (Rs, Rx) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c10) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii10ddd | Rx = add (Rs, Rx) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c18) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii11ddd | Rx = add (Rs, Rx) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a70) { + // Instruction: 3: 00111000ssssxxxx0011101--111dddd | Rx = add (Rs, Rx) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a50) { + // Instruction: 3: 00111000ssssxxxx0011101--101dddd | Rx = add (Rs, Rx) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a60) { + // Instruction: 3: 00111000ssssxxxx0011101--110dddd | Rx = add (Rs, Rx) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a40) { + // Instruction: 3: 00111000ssssxxxx0011101--100dddd | Rx = add (Rs, Rx) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x38003d00) { + // Instruction: 3: 00111000uuuuxxxx001111-1ssss0ddd | Rx = add (Ru, Rx) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x38003d08) { + // Instruction: 3: 00111000uuuuxxxx001111-1ssss1ddd | Rx = add (Ru, Rx) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003900) { + // Instruction: 3: 00111000uuuuxxxx00111001ssss--ii | Rx = add (Ru, Rx) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe40) == 0x20003a00) { + // Instruction: 3: 00100IIIIIIIxxxx0011101--0--dddd | Rx = add (Rx, #S7) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xf800fc00) == 0x20002800) { + // Instruction: 3: 00100IIIIIIIxxxx001010iiiiiidddd | Rx = add (Rx, #S7) ; Rd = #u6 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD____U6; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f0) >> 4); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = 0x%x", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003300) { + // Instruction: 3: 00100IIIIIIIxxxx00110011ssssdddd | Rx = add (Rx, #S7) ; Rd = add (Rs, #-1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__RS____1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = add (%s, #-1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003100) { + // Instruction: 3: 00100IIIIIIIxxxx00110001ssssdddd | Rx = add (Rx, #S7) ; Rd = add (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = add (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800fc00) == 0x20002c00) { + // Instruction: 3: 00100IIIIIIIxxxx001011iiiiiidddd | Rx = add (Rx, #S7) ; Rd = add (Sp, #u6:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__SP___U6_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = add (Sp, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003200) { + // Instruction: 3: 00100IIIIIIIxxxx00110010ssssdddd | Rx = add (Rx, #S7) ; Rd = and (Rs, #1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___AND__RS___1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = and (%s, #1)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003700) { + // Instruction: 3: 00100IIIIIIIxxxx00110111ssssdddd | Rx = add (Rx, #S7) ; Rd = and (Rs, #255) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___AND__RS___255_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = and (%s, #255)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800fd18) == 0x20003c00) { + // Instruction: 3: 00100IIIIIIIxxxx001111-0-ii00ddd | Rx = add (Rx, #S7) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fd08) == 0x20003d00) { + // Instruction: 3: 00100IIIIIIIxxxx001111-1ssss0ddd | Rx = add (Rx, #S7) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800fd18) == 0x20003c08) { + // Instruction: 3: 00100IIIIIIIxxxx001111-0-ii01ddd | Rx = add (Rx, #S7) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fd18) == 0x20003c10) { + // Instruction: 3: 00100IIIIIIIxxxx001111-0-ii10ddd | Rx = add (Rx, #S7) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fd18) == 0x20003c18) { + // Instruction: 3: 00100IIIIIIIxxxx001111-0-ii11ddd | Rx = add (Rx, #S7) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fd08) == 0x20003d08) { + // Instruction: 3: 00100IIIIIIIxxxx001111-1ssss1ddd | Rx = add (Rx, #S7) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe70) == 0x20003a70) { + // Instruction: 3: 00100IIIIIIIxxxx0011101--111dddd | Rx = add (Rx, #S7) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe70) == 0x20003a50) { + // Instruction: 3: 00100IIIIIIIxxxx0011101--101dddd | Rx = add (Rx, #S7) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe70) == 0x20003a60) { + // Instruction: 3: 00100IIIIIIIxxxx0011101--110dddd | Rx = add (Rx, #S7) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe70) == 0x20003a40) { + // Instruction: 3: 00100IIIIIIIxxxx0011101--100dddd | Rx = add (Rx, #S7) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003900) { + // Instruction: 3: 00100IIIIIIIxxxx00111001ssss--ii | Rx = add (Rx, #S7) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003000) { + // Instruction: 3: 00100iiiiiiixxxx00110000ssssdddd | Rx = add (Rx, #s7) ; Rd = Rs + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___RS; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003500) { + // Instruction: 3: 00100iiiiiiixxxx00110101ssssdddd | Rx = add (Rx, #s7) ; Rd = sxtb (Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___SXTB__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = sxtb (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003400) { + // Instruction: 3: 00100iiiiiiixxxx00110100ssssdddd | Rx = add (Rx, #s7) ; Rd = sxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___SXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = sxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003600) { + // Instruction: 3: 00100iiiiiiixxxx00110110ssssdddd | Rx = add (Rx, #s7) ; Rd = zxth (Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ZXTH__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = zxth (%s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x38003a00) { + // Instruction: 3: 00111000ssssxxxx0011101--0--dddd | Rx = add (Rx, Rs) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c00) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii00ddd | Rx = add (Rx, Rs) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c08) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii01ddd | Rx = add (Rx, Rs) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c10) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii10ddd | Rx = add (Rx, Rs) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x38003c18) { + // Instruction: 3: 00111000ssssxxxx001111-0-ii11ddd | Rx = add (Rx, Rs) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a70) { + // Instruction: 3: 00111000ssssxxxx0011101--111dddd | Rx = add (Rx, Rs) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a50) { + // Instruction: 3: 00111000ssssxxxx0011101--101dddd | Rx = add (Rx, Rs) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a60) { + // Instruction: 3: 00111000ssssxxxx0011101--110dddd | Rx = add (Rx, Rs) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x38003a40) { + // Instruction: 3: 00111000ssssxxxx0011101--100dddd | Rx = add (Rx, Rs) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x38003d00) { + // Instruction: 3: 00111000uuuuxxxx001111-1ssss0ddd | Rx = add (Rx, Ru) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x38003d08) { + // Instruction: 3: 00111000uuuuxxxx001111-1ssss1ddd | Rx = add (Rx, Ru) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003900) { + // Instruction: 3: 00111000uuuuxxxx00111001ssss--ii | Rx = add (Rx, Ru) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003800) { + // Instruction: 3: 00111000uuuuyyyy00111000ssssxxxx | Ry = add (Ru, Ry) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RU__RY____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Ry) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003800) { + // Instruction: 3: 00111000uuuuyyyy00111000ssssxxxx | Ry = add (Ru, Ry) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RU__RY____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Ry) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800f800) == 0x20002000) { + // Instruction: 3: 00100IIIIIIIyyyy00100iiiiiiixxxx | Ry = add (Ry, #S7) ; Rx = add (Rx, #s7) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RX___S7_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7f0) >> 4); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Ry, 0x%x) ; %s = add (Rx, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003800) { + // Instruction: 3: 00100iiiiiiiyyyy00111000ssssxxxx | Ry = add (Ry, #s7) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Ry, 0x%x) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x20003800) { + // Instruction: 3: 00100iiiiiiiyyyy00111000ssssxxxx | Ry = add (Ry, #s7) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Ry, 0x%x) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003800) { + // Instruction: 3: 00111000uuuuyyyy00111000ssssxxxx | Ry = add (Ry, Ru) ; Rx = add (Rs, Rx) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RY__RU____RX___ADD__RS__RX_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Ry, %s) ; %s = add (%s, Rx)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x38003800) { + // Instruction: 3: 00111000uuuuyyyy00111000ssssxxxx | Ry = add (Ry, Ru) ; Rx = add (Rx, Rs) + hi->instruction = HEX_INS_DUPLEX_RY___ADD__RY__RU____RX___ADD__RX__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Ry + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rx + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Ry, %s) ; %s = add (Rx, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a703c00) { + // Instruction: 3: 0011101--111eeee001111-0-ii00ddd | if (! p0) Re = #0 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___0___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a703d00) { + // Instruction: 3: 0011101--111eeee001111-1ssss0ddd | if (! p0) Re = #0 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___0__RS_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a703c08) { + // Instruction: 3: 0011101--111eeee001111-0-ii01ddd | if (! p0) Re = #0 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___1___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a703c10) { + // Instruction: 3: 0011101--111eeee001111-0-ii10ddd | if (! p0) Re = #0 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___2___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a703c18) { + // Instruction: 3: 0011101--111eeee001111-0-ii11ddd | if (! p0) Re = #0 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___3___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a703d08) { + // Instruction: 3: 0011101--111eeee001111-1ssss1ddd | if (! p0) Re = #0 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE__RS___0_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a703a70) { + // Instruction: 3: 0011101--111eeee0011101--111dddd | if (! p0) Re = #0 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___IF___NOT__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a503c00) { + // Instruction: 3: 0011101--101eeee001111-0-ii00ddd | if (! p0.new) Re = #0 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___0___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a503d00) { + // Instruction: 3: 0011101--101eeee001111-1ssss0ddd | if (! p0.new) Re = #0 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___0__RS_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a503c08) { + // Instruction: 3: 0011101--101eeee001111-0-ii01ddd | if (! p0.new) Re = #0 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___1___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a503c10) { + // Instruction: 3: 0011101--101eeee001111-0-ii10ddd | if (! p0.new) Re = #0 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___2___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a503c18) { + // Instruction: 3: 0011101--101eeee001111-0-ii11ddd | if (! p0.new) Re = #0 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___3___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a503d08) { + // Instruction: 3: 0011101--101eeee001111-1ssss1ddd | if (! p0.new) Re = #0 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE__RS___0_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a503a70) { + // Instruction: 3: 0011101--101eeee0011101--111dddd | if (! p0.new) Re = #0 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF___NOT__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a503a50) { + // Instruction: 3: 0011101--101eeee0011101--101dddd | if (! p0.new) Re = #0 ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF___NOT__P0_NEW__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a503a60) { + // Instruction: 3: 0011101--101eeee0011101--110dddd | if (! p0.new) Re = #0 ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a603c00) { + // Instruction: 3: 0011101--110eeee001111-0-ii00ddd | if (p0) Re = #0 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___0___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a603d00) { + // Instruction: 3: 0011101--110eeee001111-1ssss0ddd | if (p0) Re = #0 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___0__RS_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a603c08) { + // Instruction: 3: 0011101--110eeee001111-0-ii01ddd | if (p0) Re = #0 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___1___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a603c10) { + // Instruction: 3: 0011101--110eeee001111-0-ii10ddd | if (p0) Re = #0 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___2___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a603c18) { + // Instruction: 3: 0011101--110eeee001111-0-ii11ddd | if (p0) Re = #0 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___3___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a603d08) { + // Instruction: 3: 0011101--110eeee001111-1ssss1ddd | if (p0) Re = #0 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE__RS___0_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a603a70) { + // Instruction: 3: 0011101--110eeee0011101--111dddd | if (p0) Re = #0 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___IF___NOT__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a603a60) { + // Instruction: 3: 0011101--110eeee0011101--110dddd | if (p0) Re = #0 ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___IF__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a403c00) { + // Instruction: 3: 0011101--100eeee001111-0-ii00ddd | if (p0.new) Re = #0 ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___0___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a403d00) { + // Instruction: 3: 0011101--100eeee001111-1ssss0ddd | if (p0.new) Re = #0 ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___0__RS_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a403c08) { + // Instruction: 3: 0011101--100eeee001111-0-ii01ddd | if (p0.new) Re = #0 ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___1___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a403c10) { + // Instruction: 3: 0011101--100eeee001111-0-ii10ddd | if (p0.new) Re = #0 ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___2___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd18) == 0x3a403c18) { + // Instruction: 3: 0011101--100eeee001111-0-ii11ddd | if (p0.new) Re = #0 ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___3___U2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fd08) == 0x3a403d08) { + // Instruction: 3: 0011101--100eeee001111-1ssss1ddd | if (p0.new) Re = #0 ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE__RS___0_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a403a70) { + // Instruction: 3: 0011101--100eeee0011101--111dddd | if (p0.new) Re = #0 ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF___NOT__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a403a50) { + // Instruction: 3: 0011101--100eeee0011101--101dddd | if (p0.new) Re = #0 ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF___NOT__P0_NEW__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a403a60) { + // Instruction: 3: 0011101--100eeee0011101--110dddd | if (p0.new) Re = #0 ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF__P0__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe70) == 0x3a403a40) { + // Instruction: 3: 0011101--100eeee0011101--100dddd | if (p0.new) Re = #0 ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF__P0_NEW__RD____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe40) == 0x39003a00) { + // Instruction: 3: 00111001ssss--II0011101--0--dddd | p0 = cmp.eq (Rs, #U2) ; Rd = #-1 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RD_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = #-1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x39003c00) { + // Instruction: 3: 00111001ssss--II001111-0-ii00ddd | p0 = cmp.eq (Rs, #U2) ; Rdd = combine (#0, #u2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___0___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (#0, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x39003c08) { + // Instruction: 3: 00111001ssss--II001111-0-ii01ddd | p0 = cmp.eq (Rs, #U2) ; Rdd = combine (#1, #u2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___1___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (#1, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x39003c10) { + // Instruction: 3: 00111001ssss--II001111-0-ii10ddd | p0 = cmp.eq (Rs, #U2) ; Rdd = combine (#2, #u2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___2___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (#2, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fd18) == 0x39003c18) { + // Instruction: 3: 00111001ssss--II001111-0-ii11ddd | p0 = cmp.eq (Rs, #U2) ; Rdd = combine (#3, #u2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___3___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (#3, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x39003a70) { + // Instruction: 3: 00111001ssss--II0011101--111dddd | p0 = cmp.eq (Rs, #U2) ; if (! p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x39003a50) { + // Instruction: 3: 00111001ssss--II0011101--101dddd | p0 = cmp.eq (Rs, #U2) ; if (! p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x39003a60) { + // Instruction: 3: 00111001ssss--II0011101--110dddd | p0 = cmp.eq (Rs, #U2) ; if (p0) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe70) == 0x39003a40) { + // Instruction: 3: 00111001ssss--II0011101--100dddd | p0 = cmp.eq (Rs, #U2) ; if (p0.new) Rd = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__RD____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0.new) %s = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x39003d00) { + // Instruction: 3: 00111001uuuu--II001111-1ssss0ddd | p0 = cmp.eq (Ru, #U2) ; Rdd = combine (#0, Rs) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RDD___COMBINE___0__RS_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (#0, %s)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fd08) == 0x39003d08) { + // Instruction: 3: 00111001uuuu--II001111-1ssss1ddd | p0 = cmp.eq (Ru, #U2) ; Rdd = combine (Rs, #0) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RDD___COMBINE__RS___0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = combine (%s, #0)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x39003900) { + // Instruction: 3: 00111001uuuu--II00111001ssss--ii | p0 = cmp.eq (Ru, #U2) ; p0 = cmp.eq (Rs, #u2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____P0___CMP_EQ__RS___U2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; p0 = cmp.eq (%s, 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + break; + } + case 0x4: { + if ((hi_u32 & 0xfe40f000) == 0x5a001000) { + // Instruction: 4: 0101101--0--eeee0001iiiissssdddd | Re = #-1 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMUB__RS____U4_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe40f000) == 0x5a000000) { + // Instruction: 4: 0101101--0--eeee0000iiiissssdddd | Re = #-1 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMW__RS____U4_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x48001000) { + // Instruction: 4: 010010IIIIIIeeee0001iiiissssdddd | Re = #U6 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x48000000) { + // Instruction: 4: 010010IIIIIIeeee0000iiiissssdddd | Re = #U6 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x50001000) { + // Instruction: 4: 01010000uuuueeee0001iiiissssdddd | Re = Ru ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x50000000) { + // Instruction: 4: 01010000uuuueeee0000iiiissssdddd | Re = Ru ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x53001000) { + // Instruction: 4: 01010011uuuueeee0001iiiissssdddd | Re = add (Ru, #-1) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x53000000) { + // Instruction: 4: 01010011uuuueeee0000iiiissssdddd | Re = add (Ru, #-1) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x51001000) { + // Instruction: 4: 01010001uuuueeee0001iiiissssdddd | Re = add (Ru, #1) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x51000000) { + // Instruction: 4: 01010001uuuueeee0000iiiissssdddd | Re = add (Ru, #1) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x4c001000) { + // Instruction: 4: 010011IIIIIIeeee0001iiiissssdddd | Re = add (Sp, #U6:2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x4c000000) { + // Instruction: 4: 010011IIIIIIeeee0000iiiissssdddd | Re = add (Sp, #U6:2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x52001000) { + // Instruction: 4: 01010010uuuueeee0001iiiissssdddd | Re = and (Ru, #1) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x52000000) { + // Instruction: 4: 01010010uuuueeee0000iiiissssdddd | Re = and (Ru, #1) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x57001000) { + // Instruction: 4: 01010111uuuueeee0001iiiissssdddd | Re = and (Ru, #255) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x57000000) { + // Instruction: 4: 01010111uuuueeee0000iiiissssdddd | Re = and (Ru, #255) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x55001000) { + // Instruction: 4: 01010101uuuueeee0001iiiissssdddd | Re = sxtb (Ru) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x55000000) { + // Instruction: 4: 01010101uuuueeee0000iiiissssdddd | Re = sxtb (Ru) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x54001000) { + // Instruction: 4: 01010100uuuueeee0001iiiissssdddd | Re = sxth (Ru) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x54000000) { + // Instruction: 4: 01010100uuuueeee0000iiiissssdddd | Re = sxth (Ru) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x56001000) { + // Instruction: 4: 01010110uuuueeee0001iiiissssdddd | Re = zxth (Ru) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x56000000) { + // Instruction: 4: 01010110uuuueeee0000iiiissssdddd | Re = zxth (Ru) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c001000) { + // Instruction: 4: 010111-0-II00eee0001iiiissssdddd | Ree = combine (#0, #U2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c000000) { + // Instruction: 4: 010111-0-II00eee0000iiiissssdddd | Ree = combine (#0, #U2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x5d001000) { + // Instruction: 4: 010111-1uuuu0eee0001iiiissssdddd | Ree = combine (#0, Ru) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x5d000000) { + // Instruction: 4: 010111-1uuuu0eee0000iiiissssdddd | Ree = combine (#0, Ru) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c081000) { + // Instruction: 4: 010111-0-II01eee0001iiiissssdddd | Ree = combine (#1, #U2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c080000) { + // Instruction: 4: 010111-0-II01eee0000iiiissssdddd | Ree = combine (#1, #U2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c101000) { + // Instruction: 4: 010111-0-II10eee0001iiiissssdddd | Ree = combine (#2, #U2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c100000) { + // Instruction: 4: 010111-0-II10eee0000iiiissssdddd | Ree = combine (#2, #U2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c181000) { + // Instruction: 4: 010111-0-II11eee0001iiiissssdddd | Ree = combine (#3, #U2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x5c180000) { + // Instruction: 4: 010111-0-II11eee0000iiiissssdddd | Ree = combine (#3, #U2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x5d081000) { + // Instruction: 4: 010111-1uuuu1eee0001iiiissssdddd | Ree = combine (Ru, #0) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memub (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x5d080000) { + // Instruction: 4: 010111-1uuuu1eee0000iiiissssdddd | Ree = combine (Ru, #0) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memw (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x58001000) { + // Instruction: 4: 01011000uuuuxxxx0001iiiissssdddd | Rx = add (Ru, Rx) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x58000000) { + // Instruction: 4: 01011000uuuuxxxx0000iiiissssdddd | Rx = add (Ru, Rx) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f000) == 0x40001000) { + // Instruction: 4: 01000IIIIIIIxxxx0001iiiissssdddd | Rx = add (Rx, #S7) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f000) == 0x40000000) { + // Instruction: 4: 01000IIIIIIIxxxx0000iiiissssdddd | Rx = add (Rx, #S7) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x58001000) { + // Instruction: 4: 01011000uuuuxxxx0001iiiissssdddd | Rx = add (Rx, Ru) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x58000000) { + // Instruction: 4: 01011000uuuuxxxx0000iiiissssdddd | Rx = add (Rx, Ru) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a701000) { + // Instruction: 4: 0101101--111eeee0001iiiissssdddd | if (! p0) Re = #0 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMUB__RS____U4_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a700000) { + // Instruction: 4: 0101101--111eeee0000iiiissssdddd | if (! p0) Re = #0 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMW__RS____U4_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a501000) { + // Instruction: 4: 0101101--101eeee0001iiiissssdddd | if (! p0.new) Re = #0 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMUB__RS____U4_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a500000) { + // Instruction: 4: 0101101--101eeee0000iiiissssdddd | if (! p0.new) Re = #0 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMW__RS____U4_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a601000) { + // Instruction: 4: 0101101--110eeee0001iiiissssdddd | if (p0) Re = #0 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMUB__RS____U4_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a600000) { + // Instruction: 4: 0101101--110eeee0000iiiissssdddd | if (p0) Re = #0 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMW__RS____U4_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a401000) { + // Instruction: 4: 0101101--100eeee0001iiiissssdddd | if (p0.new) Re = #0 ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMUB__RS____U4_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x5a400000) { + // Instruction: 4: 0101101--100eeee0000iiiissssdddd | if (p0.new) Re = #0 ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMW__RS____U4_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x59001000) { + // Instruction: 4: 01011001uuuu--II0001iiiissssdddd | p0 = cmp.eq (Ru, #U2) ; Rd = memub (Rs + #u4:0) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMUB__RS____U4_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memub (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f000) == 0x59000000) { + // Instruction: 4: 01011001uuuu--II0000iiiissssdddd | p0 = cmp.eq (Ru, #U2) ; Rd = memw (Rs + #u4:2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMW__RS____U4_2_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memw (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + break; + } + case 0x5: { + if ((hi_u32 & 0xfe40ffc4) == 0x5a003f40) { + // Instruction: 5: 0101101--0--dddd0011111101---0-- | Rd = #-1 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD_____1___DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc4) == 0x5a003f00) { + // Instruction: 5: 0101101--0--dddd0011111100---0-- | Rd = #-1 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD_____1___DEALLOCFRAME; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003f45) { + // Instruction: 5: 0101101--0--dddd0011111101---101 | Rd = #-1 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003fc5) { + // Instruction: 5: 0101101--0--dddd0011111111---101 | Rd = #-1 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF___NOT__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003f47) { + // Instruction: 5: 0101101--0--dddd0011111101---111 | Rd = #-1 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003fc7) { + // Instruction: 5: 0101101--0--dddd0011111111---111 | Rd = #-1 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003f44) { + // Instruction: 5: 0101101--0--dddd0011111101---100 | Rd = #-1 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003fc4) { + // Instruction: 5: 0101101--0--dddd0011111111---100 | Rd = #-1 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003f46) { + // Instruction: 5: 0101101--0--dddd0011111101---110 | Rd = #-1 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc7) == 0x5a003fc6) { + // Instruction: 5: 0101101--0--dddd0011111111---110 | Rd = #-1 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD_____1___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ffc4) == 0x5a003fc0) { + // Instruction: 5: 0101101--0--dddd0011111111---0-- | Rd = #-1 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD_____1___JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x48003f40) { + // Instruction: 5: 010010iiiiiidddd0011111101---0-- | Rd = #u6 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD____U6___DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x48003f00) { + // Instruction: 5: 010010iiiiiidddd0011111100---0-- | Rd = #u6 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD____U6___DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003f45) { + // Instruction: 5: 010010iiiiiidddd0011111101---101 | Rd = #u6 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003fc5) { + // Instruction: 5: 010010iiiiiidddd0011111111---101 | Rd = #u6 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003f47) { + // Instruction: 5: 010010iiiiiidddd0011111101---111 | Rd = #u6 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003fc7) { + // Instruction: 5: 010010iiiiiidddd0011111111---111 | Rd = #u6 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003f44) { + // Instruction: 5: 010010iiiiiidddd0011111101---100 | Rd = #u6 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003fc4) { + // Instruction: 5: 010010iiiiiidddd0011111111---100 | Rd = #u6 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003f46) { + // Instruction: 5: 010010iiiiiidddd0011111101---110 | Rd = #u6 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x48003fc6) { + // Instruction: 5: 010010iiiiiidddd0011111111---110 | Rd = #u6 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD____U6___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x48003fc0) { + // Instruction: 5: 010010iiiiiidddd0011111111---0-- | Rd = #u6 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD____U6___JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x50003f40) { + // Instruction: 5: 01010000ssssdddd0011111101---0-- | Rd = Rs ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___RS___DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x50003f00) { + // Instruction: 5: 01010000ssssdddd0011111100---0-- | Rd = Rs ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___RS___DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003f45) { + // Instruction: 5: 01010000ssssdddd0011111101---101 | Rd = Rs ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003fc5) { + // Instruction: 5: 01010000ssssdddd0011111111---101 | Rd = Rs ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003f47) { + // Instruction: 5: 01010000ssssdddd0011111101---111 | Rd = Rs ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003fc7) { + // Instruction: 5: 01010000ssssdddd0011111111---111 | Rd = Rs ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003f44) { + // Instruction: 5: 01010000ssssdddd0011111101---100 | Rd = Rs ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003fc4) { + // Instruction: 5: 01010000ssssdddd0011111111---100 | Rd = Rs ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003f46) { + // Instruction: 5: 01010000ssssdddd0011111101---110 | Rd = Rs ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x50003fc6) { + // Instruction: 5: 01010000ssssdddd0011111111---110 | Rd = Rs ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___RS___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x50003fc0) { + // Instruction: 5: 01010000ssssdddd0011111111---0-- | Rd = Rs ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___RS___JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x53003f40) { + // Instruction: 5: 01010011ssssdddd0011111101---0-- | Rd = add (Rs, #-1) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x53003f00) { + // Instruction: 5: 01010011ssssdddd0011111100---0-- | Rd = add (Rs, #-1) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003f45) { + // Instruction: 5: 01010011ssssdddd0011111101---101 | Rd = add (Rs, #-1) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003fc5) { + // Instruction: 5: 01010011ssssdddd0011111111---101 | Rd = add (Rs, #-1) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003f47) { + // Instruction: 5: 01010011ssssdddd0011111101---111 | Rd = add (Rs, #-1) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003fc7) { + // Instruction: 5: 01010011ssssdddd0011111111---111 | Rd = add (Rs, #-1) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003f44) { + // Instruction: 5: 01010011ssssdddd0011111101---100 | Rd = add (Rs, #-1) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003fc4) { + // Instruction: 5: 01010011ssssdddd0011111111---100 | Rd = add (Rs, #-1) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003f46) { + // Instruction: 5: 01010011ssssdddd0011111101---110 | Rd = add (Rs, #-1) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x53003fc6) { + // Instruction: 5: 01010011ssssdddd0011111111---110 | Rd = add (Rs, #-1) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x53003fc0) { + // Instruction: 5: 01010011ssssdddd0011111111---0-- | Rd = add (Rs, #-1) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x51003f40) { + // Instruction: 5: 01010001ssssdddd0011111101---0-- | Rd = add (Rs, #1) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x51003f00) { + // Instruction: 5: 01010001ssssdddd0011111100---0-- | Rd = add (Rs, #1) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003f45) { + // Instruction: 5: 01010001ssssdddd0011111101---101 | Rd = add (Rs, #1) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003fc5) { + // Instruction: 5: 01010001ssssdddd0011111111---101 | Rd = add (Rs, #1) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003f47) { + // Instruction: 5: 01010001ssssdddd0011111101---111 | Rd = add (Rs, #1) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003fc7) { + // Instruction: 5: 01010001ssssdddd0011111111---111 | Rd = add (Rs, #1) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003f44) { + // Instruction: 5: 01010001ssssdddd0011111101---100 | Rd = add (Rs, #1) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003fc4) { + // Instruction: 5: 01010001ssssdddd0011111111---100 | Rd = add (Rs, #1) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003f46) { + // Instruction: 5: 01010001ssssdddd0011111101---110 | Rd = add (Rs, #1) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x51003fc6) { + // Instruction: 5: 01010001ssssdddd0011111111---110 | Rd = add (Rs, #1) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x51003fc0) { + // Instruction: 5: 01010001ssssdddd0011111111---0-- | Rd = add (Rs, #1) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x4c003f40) { + // Instruction: 5: 010011iiiiiidddd0011111101---0-- | Rd = add (Sp, #u6:2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x4c003f00) { + // Instruction: 5: 010011iiiiiidddd0011111100---0-- | Rd = add (Sp, #u6:2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003f45) { + // Instruction: 5: 010011iiiiiidddd0011111101---101 | Rd = add (Sp, #u6:2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003fc5) { + // Instruction: 5: 010011iiiiiidddd0011111111---101 | Rd = add (Sp, #u6:2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003f47) { + // Instruction: 5: 010011iiiiiidddd0011111101---111 | Rd = add (Sp, #u6:2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003fc7) { + // Instruction: 5: 010011iiiiiidddd0011111111---111 | Rd = add (Sp, #u6:2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003f44) { + // Instruction: 5: 010011iiiiiidddd0011111101---100 | Rd = add (Sp, #u6:2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003fc4) { + // Instruction: 5: 010011iiiiiidddd0011111111---100 | Rd = add (Sp, #u6:2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003f46) { + // Instruction: 5: 010011iiiiiidddd0011111101---110 | Rd = add (Sp, #u6:2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc7) == 0x4c003fc6) { + // Instruction: 5: 010011iiiiiidddd0011111111---110 | Rd = add (Sp, #u6:2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00ffc4) == 0x4c003fc0) { + // Instruction: 5: 010011iiiiiidddd0011111111---0-- | Rd = add (Sp, #u6:2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x52003f40) { + // Instruction: 5: 01010010ssssdddd0011111101---0-- | Rd = and (Rs, #1) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x52003f00) { + // Instruction: 5: 01010010ssssdddd0011111100---0-- | Rd = and (Rs, #1) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003f45) { + // Instruction: 5: 01010010ssssdddd0011111101---101 | Rd = and (Rs, #1) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003fc5) { + // Instruction: 5: 01010010ssssdddd0011111111---101 | Rd = and (Rs, #1) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003f47) { + // Instruction: 5: 01010010ssssdddd0011111101---111 | Rd = and (Rs, #1) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003fc7) { + // Instruction: 5: 01010010ssssdddd0011111111---111 | Rd = and (Rs, #1) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003f44) { + // Instruction: 5: 01010010ssssdddd0011111101---100 | Rd = and (Rs, #1) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003fc4) { + // Instruction: 5: 01010010ssssdddd0011111111---100 | Rd = and (Rs, #1) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003f46) { + // Instruction: 5: 01010010ssssdddd0011111101---110 | Rd = and (Rs, #1) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x52003fc6) { + // Instruction: 5: 01010010ssssdddd0011111111---110 | Rd = and (Rs, #1) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x52003fc0) { + // Instruction: 5: 01010010ssssdddd0011111111---0-- | Rd = and (Rs, #1) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x57003f40) { + // Instruction: 5: 01010111ssssdddd0011111101---0-- | Rd = and (Rs, #255) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x57003f00) { + // Instruction: 5: 01010111ssssdddd0011111100---0-- | Rd = and (Rs, #255) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003f45) { + // Instruction: 5: 01010111ssssdddd0011111101---101 | Rd = and (Rs, #255) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003fc5) { + // Instruction: 5: 01010111ssssdddd0011111111---101 | Rd = and (Rs, #255) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003f47) { + // Instruction: 5: 01010111ssssdddd0011111101---111 | Rd = and (Rs, #255) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003fc7) { + // Instruction: 5: 01010111ssssdddd0011111111---111 | Rd = and (Rs, #255) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003f44) { + // Instruction: 5: 01010111ssssdddd0011111101---100 | Rd = and (Rs, #255) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003fc4) { + // Instruction: 5: 01010111ssssdddd0011111111---100 | Rd = and (Rs, #255) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003f46) { + // Instruction: 5: 01010111ssssdddd0011111101---110 | Rd = and (Rs, #255) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x57003fc6) { + // Instruction: 5: 01010111ssssdddd0011111111---110 | Rd = and (Rs, #255) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x57003fc0) { + // Instruction: 5: 01010111ssssdddd0011111111---0-- | Rd = and (Rs, #255) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x55003f40) { + // Instruction: 5: 01010101ssssdddd0011111101---0-- | Rd = sxtb (Rs) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x55003f00) { + // Instruction: 5: 01010101ssssdddd0011111100---0-- | Rd = sxtb (Rs) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003f45) { + // Instruction: 5: 01010101ssssdddd0011111101---101 | Rd = sxtb (Rs) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003fc5) { + // Instruction: 5: 01010101ssssdddd0011111111---101 | Rd = sxtb (Rs) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003f47) { + // Instruction: 5: 01010101ssssdddd0011111101---111 | Rd = sxtb (Rs) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003fc7) { + // Instruction: 5: 01010101ssssdddd0011111111---111 | Rd = sxtb (Rs) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003f44) { + // Instruction: 5: 01010101ssssdddd0011111101---100 | Rd = sxtb (Rs) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003fc4) { + // Instruction: 5: 01010101ssssdddd0011111111---100 | Rd = sxtb (Rs) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003f46) { + // Instruction: 5: 01010101ssssdddd0011111101---110 | Rd = sxtb (Rs) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x55003fc6) { + // Instruction: 5: 01010101ssssdddd0011111111---110 | Rd = sxtb (Rs) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x55003fc0) { + // Instruction: 5: 01010101ssssdddd0011111111---0-- | Rd = sxtb (Rs) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x54003f40) { + // Instruction: 5: 01010100ssssdddd0011111101---0-- | Rd = sxth (Rs) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x54003f00) { + // Instruction: 5: 01010100ssssdddd0011111100---0-- | Rd = sxth (Rs) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003f45) { + // Instruction: 5: 01010100ssssdddd0011111101---101 | Rd = sxth (Rs) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003fc5) { + // Instruction: 5: 01010100ssssdddd0011111111---101 | Rd = sxth (Rs) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003f47) { + // Instruction: 5: 01010100ssssdddd0011111101---111 | Rd = sxth (Rs) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003fc7) { + // Instruction: 5: 01010100ssssdddd0011111111---111 | Rd = sxth (Rs) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003f44) { + // Instruction: 5: 01010100ssssdddd0011111101---100 | Rd = sxth (Rs) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003fc4) { + // Instruction: 5: 01010100ssssdddd0011111111---100 | Rd = sxth (Rs) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003f46) { + // Instruction: 5: 01010100ssssdddd0011111101---110 | Rd = sxth (Rs) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x54003fc6) { + // Instruction: 5: 01010100ssssdddd0011111111---110 | Rd = sxth (Rs) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x54003fc0) { + // Instruction: 5: 01010100ssssdddd0011111111---0-- | Rd = sxth (Rs) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x56003f40) { + // Instruction: 5: 01010110ssssdddd0011111101---0-- | Rd = zxth (Rs) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x56003f00) { + // Instruction: 5: 01010110ssssdddd0011111100---0-- | Rd = zxth (Rs) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003f45) { + // Instruction: 5: 01010110ssssdddd0011111101---101 | Rd = zxth (Rs) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003fc5) { + // Instruction: 5: 01010110ssssdddd0011111111---101 | Rd = zxth (Rs) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003f47) { + // Instruction: 5: 01010110ssssdddd0011111101---111 | Rd = zxth (Rs) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003fc7) { + // Instruction: 5: 01010110ssssdddd0011111111---111 | Rd = zxth (Rs) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003f44) { + // Instruction: 5: 01010110ssssdddd0011111101---100 | Rd = zxth (Rs) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003fc4) { + // Instruction: 5: 01010110ssssdddd0011111111---100 | Rd = zxth (Rs) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003f46) { + // Instruction: 5: 01010110ssssdddd0011111101---110 | Rd = zxth (Rs) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x56003fc6) { + // Instruction: 5: 01010110ssssdddd0011111111---110 | Rd = zxth (Rs) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x56003fc0) { + // Instruction: 5: 01010110ssssdddd0011111111---0-- | Rd = zxth (Rs) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c003f40) { + // Instruction: 5: 010111-0-ii00ddd0011111101---0-- | Rdd = combine (#0, #u2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c003f00) { + // Instruction: 5: 010111-0-ii00ddd0011111100---0-- | Rdd = combine (#0, #u2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003f45) { + // Instruction: 5: 010111-0-ii00ddd0011111101---101 | Rdd = combine (#0, #u2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003fc5) { + // Instruction: 5: 010111-0-ii00ddd0011111111---101 | Rdd = combine (#0, #u2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003f47) { + // Instruction: 5: 010111-0-ii00ddd0011111101---111 | Rdd = combine (#0, #u2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003fc7) { + // Instruction: 5: 010111-0-ii00ddd0011111111---111 | Rdd = combine (#0, #u2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003f44) { + // Instruction: 5: 010111-0-ii00ddd0011111101---100 | Rdd = combine (#0, #u2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003fc4) { + // Instruction: 5: 010111-0-ii00ddd0011111111---100 | Rdd = combine (#0, #u2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003f46) { + // Instruction: 5: 010111-0-ii00ddd0011111101---110 | Rdd = combine (#0, #u2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c003fc6) { + // Instruction: 5: 010111-0-ii00ddd0011111111---110 | Rdd = combine (#0, #u2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c003fc0) { + // Instruction: 5: 010111-0-ii00ddd0011111111---0-- | Rdd = combine (#0, #u2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d003f40) { + // Instruction: 5: 010111-1ssss0ddd0011111101---0-- | Rdd = combine (#0, Rs) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d003f00) { + // Instruction: 5: 010111-1ssss0ddd0011111100---0-- | Rdd = combine (#0, Rs) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003f45) { + // Instruction: 5: 010111-1ssss0ddd0011111101---101 | Rdd = combine (#0, Rs) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003fc5) { + // Instruction: 5: 010111-1ssss0ddd0011111111---101 | Rdd = combine (#0, Rs) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003f47) { + // Instruction: 5: 010111-1ssss0ddd0011111101---111 | Rdd = combine (#0, Rs) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003fc7) { + // Instruction: 5: 010111-1ssss0ddd0011111111---111 | Rdd = combine (#0, Rs) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003f44) { + // Instruction: 5: 010111-1ssss0ddd0011111101---100 | Rdd = combine (#0, Rs) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003fc4) { + // Instruction: 5: 010111-1ssss0ddd0011111111---100 | Rdd = combine (#0, Rs) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003f46) { + // Instruction: 5: 010111-1ssss0ddd0011111101---110 | Rdd = combine (#0, Rs) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d003fc6) { + // Instruction: 5: 010111-1ssss0ddd0011111111---110 | Rdd = combine (#0, Rs) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d003fc0) { + // Instruction: 5: 010111-1ssss0ddd0011111111---0-- | Rdd = combine (#0, Rs) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c083f40) { + // Instruction: 5: 010111-0-ii01ddd0011111101---0-- | Rdd = combine (#1, #u2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c083f00) { + // Instruction: 5: 010111-0-ii01ddd0011111100---0-- | Rdd = combine (#1, #u2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083f45) { + // Instruction: 5: 010111-0-ii01ddd0011111101---101 | Rdd = combine (#1, #u2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083fc5) { + // Instruction: 5: 010111-0-ii01ddd0011111111---101 | Rdd = combine (#1, #u2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083f47) { + // Instruction: 5: 010111-0-ii01ddd0011111101---111 | Rdd = combine (#1, #u2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083fc7) { + // Instruction: 5: 010111-0-ii01ddd0011111111---111 | Rdd = combine (#1, #u2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083f44) { + // Instruction: 5: 010111-0-ii01ddd0011111101---100 | Rdd = combine (#1, #u2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083fc4) { + // Instruction: 5: 010111-0-ii01ddd0011111111---100 | Rdd = combine (#1, #u2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083f46) { + // Instruction: 5: 010111-0-ii01ddd0011111101---110 | Rdd = combine (#1, #u2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c083fc6) { + // Instruction: 5: 010111-0-ii01ddd0011111111---110 | Rdd = combine (#1, #u2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c083fc0) { + // Instruction: 5: 010111-0-ii01ddd0011111111---0-- | Rdd = combine (#1, #u2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c103f40) { + // Instruction: 5: 010111-0-ii10ddd0011111101---0-- | Rdd = combine (#2, #u2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c103f00) { + // Instruction: 5: 010111-0-ii10ddd0011111100---0-- | Rdd = combine (#2, #u2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103f45) { + // Instruction: 5: 010111-0-ii10ddd0011111101---101 | Rdd = combine (#2, #u2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103fc5) { + // Instruction: 5: 010111-0-ii10ddd0011111111---101 | Rdd = combine (#2, #u2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103f47) { + // Instruction: 5: 010111-0-ii10ddd0011111101---111 | Rdd = combine (#2, #u2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103fc7) { + // Instruction: 5: 010111-0-ii10ddd0011111111---111 | Rdd = combine (#2, #u2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103f44) { + // Instruction: 5: 010111-0-ii10ddd0011111101---100 | Rdd = combine (#2, #u2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103fc4) { + // Instruction: 5: 010111-0-ii10ddd0011111111---100 | Rdd = combine (#2, #u2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103f46) { + // Instruction: 5: 010111-0-ii10ddd0011111101---110 | Rdd = combine (#2, #u2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c103fc6) { + // Instruction: 5: 010111-0-ii10ddd0011111111---110 | Rdd = combine (#2, #u2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c103fc0) { + // Instruction: 5: 010111-0-ii10ddd0011111111---0-- | Rdd = combine (#2, #u2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c183f40) { + // Instruction: 5: 010111-0-ii11ddd0011111101---0-- | Rdd = combine (#3, #u2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c183f00) { + // Instruction: 5: 010111-0-ii11ddd0011111100---0-- | Rdd = combine (#3, #u2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183f45) { + // Instruction: 5: 010111-0-ii11ddd0011111101---101 | Rdd = combine (#3, #u2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183fc5) { + // Instruction: 5: 010111-0-ii11ddd0011111111---101 | Rdd = combine (#3, #u2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183f47) { + // Instruction: 5: 010111-0-ii11ddd0011111101---111 | Rdd = combine (#3, #u2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183fc7) { + // Instruction: 5: 010111-0-ii11ddd0011111111---111 | Rdd = combine (#3, #u2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183f44) { + // Instruction: 5: 010111-0-ii11ddd0011111101---100 | Rdd = combine (#3, #u2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183fc4) { + // Instruction: 5: 010111-0-ii11ddd0011111111---100 | Rdd = combine (#3, #u2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183f46) { + // Instruction: 5: 010111-0-ii11ddd0011111101---110 | Rdd = combine (#3, #u2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc7) == 0x5c183fc6) { + // Instruction: 5: 010111-0-ii11ddd0011111111---110 | Rdd = combine (#3, #u2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd18ffc4) == 0x5c183fc0) { + // Instruction: 5: 010111-0-ii11ddd0011111111---0-- | Rdd = combine (#3, #u2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d083f40) { + // Instruction: 5: 010111-1ssss1ddd0011111101---0-- | Rdd = combine (Rs, #0) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d083f00) { + // Instruction: 5: 010111-1ssss1ddd0011111100---0-- | Rdd = combine (Rs, #0) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; deallocframe", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083f45) { + // Instruction: 5: 010111-1ssss1ddd0011111101---101 | Rdd = combine (Rs, #0) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (! p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083fc5) { + // Instruction: 5: 010111-1ssss1ddd0011111111---101 | Rdd = combine (Rs, #0) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (! p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083f47) { + // Instruction: 5: 010111-1ssss1ddd0011111101---111 | Rdd = combine (Rs, #0) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (! p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083fc7) { + // Instruction: 5: 010111-1ssss1ddd0011111111---111 | Rdd = combine (Rs, #0) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083f44) { + // Instruction: 5: 010111-1ssss1ddd0011111101---100 | Rdd = combine (Rs, #0) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (p0) dealloc_return", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083fc4) { + // Instruction: 5: 010111-1ssss1ddd0011111111---100 | Rdd = combine (Rs, #0) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (p0) jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083f46) { + // Instruction: 5: 010111-1ssss1ddd0011111101---110 | Rdd = combine (Rs, #0) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (p0.new) dealloc_return:nt", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc7) == 0x5d083fc6) { + // Instruction: 5: 010111-1ssss1ddd0011111111---110 | Rdd = combine (Rs, #0) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; if (p0.new) jumpr:nt Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ffc4) == 0x5d083fc0) { + // Instruction: 5: 010111-1ssss1ddd0011111111---0-- | Rdd = combine (Rs, #0) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; jumpr Lr", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xfe40f800) == 0x5a003000) { + // Instruction: 5: 0101101--0--eeee00110iiissssdddd | Re = #-1 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMB__RS____U3_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe40f800) == 0x5a002000) { + // Instruction: 5: 0101101--0--eeee00100iiissssdddd | Re = #-1 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe40f800) == 0x5a002800) { + // Instruction: 5: 0101101--0--eeee00101iiissssdddd | Re = #-1 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMUH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe40fe00) == 0x5a003c00) { + // Instruction: 5: 0101101--0--eeee0011110iiiiidddd | Re = #-1 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RD___MEMW__SP____U5_2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40ff00) == 0x5a003e00) { + // Instruction: 5: 0101101--0--eeee00111110iiiiiddd | Re = #-1 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE_____1___RDD___MEMD__SP____U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x48003000) { + // Instruction: 5: 010010IIIIIIeeee00110iiissssdddd | Re = #U6 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x48002000) { + // Instruction: 5: 010010IIIIIIeeee00100iiissssdddd | Re = #U6 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x48002800) { + // Instruction: 5: 010010IIIIIIeeee00101iiissssdddd | Re = #U6 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x48003c00) { + // Instruction: 5: 010010IIIIIIeeee0011110iiiiidddd | Re = #U6 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x48003e00) { + // Instruction: 5: 010010IIIIIIeeee00111110iiiiiddd | Re = #U6 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE____U6___RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x50003c00) { + // Instruction: 5: 01010000sssseeee0011110iiiiidddd | Re = Rs ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x50003e00) { + // Instruction: 5: 01010000sssseeee00111110iiiiiddd | Re = Rs ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___RS___RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x50003000) { + // Instruction: 5: 01010000uuuueeee00110iiissssdddd | Re = Ru ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x50002000) { + // Instruction: 5: 01010000uuuueeee00100iiissssdddd | Re = Ru ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x50002800) { + // Instruction: 5: 01010000uuuueeee00101iiissssdddd | Re = Ru ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___RU___RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x53003c00) { + // Instruction: 5: 01010011sssseeee0011110iiiiidddd | Re = add (Rs, #-1) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x53003e00) { + // Instruction: 5: 01010011sssseeee00111110iiiiiddd | Re = add (Rs, #-1) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x51003c00) { + // Instruction: 5: 01010001sssseeee0011110iiiiidddd | Re = add (Rs, #1) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x51003e00) { + // Instruction: 5: 01010001sssseeee00111110iiiiiddd | Re = add (Rs, #1) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x53003000) { + // Instruction: 5: 01010011uuuueeee00110iiissssdddd | Re = add (Ru, #-1) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x53002000) { + // Instruction: 5: 01010011uuuueeee00100iiissssdddd | Re = add (Ru, #-1) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x53002800) { + // Instruction: 5: 01010011uuuueeee00101iiissssdddd | Re = add (Ru, #-1) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x51003000) { + // Instruction: 5: 01010001uuuueeee00110iiissssdddd | Re = add (Ru, #1) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x51002000) { + // Instruction: 5: 01010001uuuueeee00100iiissssdddd | Re = add (Ru, #1) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x51002800) { + // Instruction: 5: 01010001uuuueeee00101iiissssdddd | Re = add (Ru, #1) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x4c003000) { + // Instruction: 5: 010011IIIIIIeeee00110iiissssdddd | Re = add (Sp, #U6:2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x4c002000) { + // Instruction: 5: 010011IIIIIIeeee00100iiissssdddd | Re = add (Sp, #U6:2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x4c002800) { + // Instruction: 5: 010011IIIIIIeeee00101iiissssdddd | Re = add (Sp, #U6:2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x4c003c00) { + // Instruction: 5: 010011IIIIIIeeee0011110iiiiidddd | Re = add (Sp, #U6:2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x4c003e00) { + // Instruction: 5: 010011IIIIIIeeee00111110iiiiiddd | Re = add (Sp, #U6:2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x52003c00) { + // Instruction: 5: 01010010sssseeee0011110iiiiidddd | Re = and (Rs, #1) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x52003e00) { + // Instruction: 5: 01010010sssseeee00111110iiiiiddd | Re = and (Rs, #1) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___1____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x57003c00) { + // Instruction: 5: 01010111sssseeee0011110iiiiidddd | Re = and (Rs, #255) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x57003e00) { + // Instruction: 5: 01010111sssseeee00111110iiiiiddd | Re = and (Rs, #255) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RS___255____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x52003000) { + // Instruction: 5: 01010010uuuueeee00110iiissssdddd | Re = and (Ru, #1) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x52002000) { + // Instruction: 5: 01010010uuuueeee00100iiissssdddd | Re = and (Ru, #1) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x52002800) { + // Instruction: 5: 01010010uuuueeee00101iiissssdddd | Re = and (Ru, #1) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x57003000) { + // Instruction: 5: 01010111uuuueeee00110iiissssdddd | Re = and (Ru, #255) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x57002000) { + // Instruction: 5: 01010111uuuueeee00100iiissssdddd | Re = and (Ru, #255) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x57002800) { + // Instruction: 5: 01010111uuuueeee00101iiissssdddd | Re = and (Ru, #255) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x55003c00) { + // Instruction: 5: 01010101sssseeee0011110iiiiidddd | Re = sxtb (Rs) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x55003e00) { + // Instruction: 5: 01010101sssseeee00111110iiiiiddd | Re = sxtb (Rs) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RS____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x55003000) { + // Instruction: 5: 01010101uuuueeee00110iiissssdddd | Re = sxtb (Ru) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x55002000) { + // Instruction: 5: 01010101uuuueeee00100iiissssdddd | Re = sxtb (Ru) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x55002800) { + // Instruction: 5: 01010101uuuueeee00101iiissssdddd | Re = sxtb (Ru) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x54003c00) { + // Instruction: 5: 01010100sssseeee0011110iiiiidddd | Re = sxth (Rs) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x54003e00) { + // Instruction: 5: 01010100sssseeee00111110iiiiiddd | Re = sxth (Rs) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RS____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x54003000) { + // Instruction: 5: 01010100uuuueeee00110iiissssdddd | Re = sxth (Ru) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x54002000) { + // Instruction: 5: 01010100uuuueeee00100iiissssdddd | Re = sxth (Ru) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x54002800) { + // Instruction: 5: 01010100uuuueeee00101iiissssdddd | Re = sxth (Ru) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x56003c00) { + // Instruction: 5: 01010110sssseeee0011110iiiiidddd | Re = zxth (Rs) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x56003e00) { + // Instruction: 5: 01010110sssseeee00111110iiiiiddd | Re = zxth (Rs) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x56003000) { + // Instruction: 5: 01010110uuuueeee00110iiissssdddd | Re = zxth (Ru) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x56002000) { + // Instruction: 5: 01010110uuuueeee00100iiissssdddd | Re = zxth (Ru) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x56002800) { + // Instruction: 5: 01010110uuuueeee00101iiissssdddd | Re = zxth (Ru) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c003000) { + // Instruction: 5: 010111-0-II00eee00110iiissssdddd | Ree = combine (#0, #U2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c002000) { + // Instruction: 5: 010111-0-II00eee00100iiissssdddd | Ree = combine (#0, #U2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c002800) { + // Instruction: 5: 010111-0-II00eee00101iiissssdddd | Ree = combine (#0, #U2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x5c003c00) { + // Instruction: 5: 010111-0-II00eee0011110iiiiidddd | Ree = combine (#0, #U2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x5c003e00) { + // Instruction: 5: 010111-0-II00eee00111110iiiiiddd | Ree = combine (#0, #U2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x5d003c00) { + // Instruction: 5: 010111-1ssss0eee0011110iiiiidddd | Ree = combine (#0, Rs) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RS____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x5d003e00) { + // Instruction: 5: 010111-1ssss0eee00111110iiiiiddd | Ree = combine (#0, Rs) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RS____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d003000) { + // Instruction: 5: 010111-1uuuu0eee00110iiissssdddd | Ree = combine (#0, Ru) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d002000) { + // Instruction: 5: 010111-1uuuu0eee00100iiissssdddd | Ree = combine (#0, Ru) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d002800) { + // Instruction: 5: 010111-1uuuu0eee00101iiissssdddd | Ree = combine (#0, Ru) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c083000) { + // Instruction: 5: 010111-0-II01eee00110iiissssdddd | Ree = combine (#1, #U2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c082000) { + // Instruction: 5: 010111-0-II01eee00100iiissssdddd | Ree = combine (#1, #U2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c082800) { + // Instruction: 5: 010111-0-II01eee00101iiissssdddd | Ree = combine (#1, #U2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x5c083c00) { + // Instruction: 5: 010111-0-II01eee0011110iiiiidddd | Ree = combine (#1, #U2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x5c083e00) { + // Instruction: 5: 010111-0-II01eee00111110iiiiiddd | Ree = combine (#1, #U2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c103000) { + // Instruction: 5: 010111-0-II10eee00110iiissssdddd | Ree = combine (#2, #U2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c102000) { + // Instruction: 5: 010111-0-II10eee00100iiissssdddd | Ree = combine (#2, #U2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c102800) { + // Instruction: 5: 010111-0-II10eee00101iiissssdddd | Ree = combine (#2, #U2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x5c103c00) { + // Instruction: 5: 010111-0-II10eee0011110iiiiidddd | Ree = combine (#2, #U2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x5c103e00) { + // Instruction: 5: 010111-0-II10eee00111110iiiiiddd | Ree = combine (#2, #U2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c183000) { + // Instruction: 5: 010111-0-II11eee00110iiissssdddd | Ree = combine (#3, #U2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c182000) { + // Instruction: 5: 010111-0-II11eee00100iiissssdddd | Ree = combine (#3, #U2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x5c182800) { + // Instruction: 5: 010111-0-II11eee00101iiissssdddd | Ree = combine (#3, #U2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x5c183c00) { + // Instruction: 5: 010111-0-II11eee0011110iiiiidddd | Ree = combine (#3, #U2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x5c183e00) { + // Instruction: 5: 010111-0-II11eee00111110iiiiiddd | Ree = combine (#3, #U2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x5d083c00) { + // Instruction: 5: 010111-1ssss1eee0011110iiiiidddd | Ree = combine (Rs, #0) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RS___0____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memw (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x5d083e00) { + // Instruction: 5: 010111-1ssss1eee00111110iiiiiddd | Ree = combine (Rs, #0) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RS___0____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memd (Sp + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d083000) { + // Instruction: 5: 010111-1uuuu1eee00110iiissssdddd | Ree = combine (Ru, #0) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memb (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d082000) { + // Instruction: 5: 010111-1uuuu1eee00100iiissssdddd | Ree = combine (Ru, #0) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x5d082800) { + // Instruction: 5: 010111-1uuuu1eee00101iiissssdddd | Ree = combine (Ru, #0) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; %s = memuh (%s + 0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x58003c00) { + // Instruction: 5: 01011000ssssxxxx0011110iiiiidddd | Rx = add (Rs, Rx) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x58003e00) { + // Instruction: 5: 01011000ssssxxxx00111110iiiiiddd | Rx = add (Rs, Rx) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003f40) { + // Instruction: 5: 01011000ssssxxxx0011111101---0-- | Rx = add (Rs, Rx) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003f00) { + // Instruction: 5: 01011000ssssxxxx0011111100---0-- | Rx = add (Rs, Rx) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f45) { + // Instruction: 5: 01011000ssssxxxx0011111101---101 | Rx = add (Rs, Rx) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc5) { + // Instruction: 5: 01011000ssssxxxx0011111111---101 | Rx = add (Rs, Rx) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f47) { + // Instruction: 5: 01011000ssssxxxx0011111101---111 | Rx = add (Rs, Rx) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc7) { + // Instruction: 5: 01011000ssssxxxx0011111111---111 | Rx = add (Rs, Rx) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f44) { + // Instruction: 5: 01011000ssssxxxx0011111101---100 | Rx = add (Rs, Rx) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc4) { + // Instruction: 5: 01011000ssssxxxx0011111111---100 | Rx = add (Rs, Rx) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f46) { + // Instruction: 5: 01011000ssssxxxx0011111101---110 | Rx = add (Rs, Rx) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc6) { + // Instruction: 5: 01011000ssssxxxx0011111111---110 | Rx = add (Rs, Rx) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003fc0) { + // Instruction: 5: 01011000ssssxxxx0011111111---0-- | Rx = add (Rs, Rx) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58003000) { + // Instruction: 5: 01011000uuuuxxxx00110iiissssdddd | Rx = add (Ru, Rx) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58002000) { + // Instruction: 5: 01011000uuuuxxxx00100iiissssdddd | Rx = add (Ru, Rx) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58002800) { + // Instruction: 5: 01011000uuuuxxxx00101iiissssdddd | Rx = add (Ru, Rx) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x40003000) { + // Instruction: 5: 01000IIIIIIIxxxx00110iiissssdddd | Rx = add (Rx, #S7) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x40002000) { + // Instruction: 5: 01000IIIIIIIxxxx00100iiissssdddd | Rx = add (Rx, #S7) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0x40002800) { + // Instruction: 5: 01000IIIIIIIxxxx00101iiissssdddd | Rx = add (Rx, #S7) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x40003c00) { + // Instruction: 5: 01000IIIIIIIxxxx0011110iiiiidddd | Rx = add (Rx, #S7) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x40003e00) { + // Instruction: 5: 01000IIIIIIIxxxx00111110iiiiiddd | Rx = add (Rx, #S7) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x40003f40) { + // Instruction: 5: 01000iiiiiiixxxx0011111101---0-- | Rx = add (Rx, #s7) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x40003f00) { + // Instruction: 5: 01000iiiiiiixxxx0011111100---0-- | Rx = add (Rx, #s7) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003f45) { + // Instruction: 5: 01000iiiiiiixxxx0011111101---101 | Rx = add (Rx, #s7) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003fc5) { + // Instruction: 5: 01000iiiiiiixxxx0011111111---101 | Rx = add (Rx, #s7) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003f47) { + // Instruction: 5: 01000iiiiiiixxxx0011111101---111 | Rx = add (Rx, #s7) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003fc7) { + // Instruction: 5: 01000iiiiiiixxxx0011111111---111 | Rx = add (Rx, #s7) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003f44) { + // Instruction: 5: 01000iiiiiiixxxx0011111101---100 | Rx = add (Rx, #s7) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003fc4) { + // Instruction: 5: 01000iiiiiiixxxx0011111111---100 | Rx = add (Rx, #s7) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003f46) { + // Instruction: 5: 01000iiiiiiixxxx0011111101---110 | Rx = add (Rx, #s7) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc7) == 0x40003fc6) { + // Instruction: 5: 01000iiiiiiixxxx0011111111---110 | Rx = add (Rx, #s7) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800ffc4) == 0x40003fc0) { + // Instruction: 5: 01000iiiiiiixxxx0011111111---0-- | Rx = add (Rx, #s7) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x58003c00) { + // Instruction: 5: 01011000ssssxxxx0011110iiiiidddd | Rx = add (Rx, Rs) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x58003e00) { + // Instruction: 5: 01011000ssssxxxx00111110iiiiiddd | Rx = add (Rx, Rs) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003f40) { + // Instruction: 5: 01011000ssssxxxx0011111101---0-- | Rx = add (Rx, Rs) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003f00) { + // Instruction: 5: 01011000ssssxxxx0011111100---0-- | Rx = add (Rx, Rs) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f45) { + // Instruction: 5: 01011000ssssxxxx0011111101---101 | Rx = add (Rx, Rs) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc5) { + // Instruction: 5: 01011000ssssxxxx0011111111---101 | Rx = add (Rx, Rs) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f47) { + // Instruction: 5: 01011000ssssxxxx0011111101---111 | Rx = add (Rx, Rs) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc7) { + // Instruction: 5: 01011000ssssxxxx0011111111---111 | Rx = add (Rx, Rs) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f44) { + // Instruction: 5: 01011000ssssxxxx0011111101---100 | Rx = add (Rx, Rs) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc4) { + // Instruction: 5: 01011000ssssxxxx0011111111---100 | Rx = add (Rx, Rs) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003f46) { + // Instruction: 5: 01011000ssssxxxx0011111101---110 | Rx = add (Rx, Rs) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x58003fc6) { + // Instruction: 5: 01011000ssssxxxx0011111111---110 | Rx = add (Rx, Rs) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x58003fc0) { + // Instruction: 5: 01011000ssssxxxx0011111111---0-- | Rx = add (Rx, Rs) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58003000) { + // Instruction: 5: 01011000uuuuxxxx00110iiissssdddd | Rx = add (Rx, Ru) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58002000) { + // Instruction: 5: 01011000uuuuxxxx00100iiissssdddd | Rx = add (Rx, Ru) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x58002800) { + // Instruction: 5: 01011000uuuuxxxx00101iiissssdddd | Rx = add (Rx, Ru) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a703f40) { + // Instruction: 5: 0101101--111dddd0011111101---0-- | if (! p0) Rd = #0 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a703f00) { + // Instruction: 5: 0101101--111dddd0011111100---0-- | if (! p0) Rd = #0 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___DEALLOCFRAME; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703f45) { + // Instruction: 5: 0101101--111dddd0011111101---101 | if (! p0) Rd = #0 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703fc5) { + // Instruction: 5: 0101101--111dddd0011111111---101 | if (! p0) Rd = #0 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703f47) { + // Instruction: 5: 0101101--111dddd0011111101---111 | if (! p0) Rd = #0 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703fc7) { + // Instruction: 5: 0101101--111dddd0011111111---111 | if (! p0) Rd = #0 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703f44) { + // Instruction: 5: 0101101--111dddd0011111101---100 | if (! p0) Rd = #0 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703fc4) { + // Instruction: 5: 0101101--111dddd0011111111---100 | if (! p0) Rd = #0 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703f46) { + // Instruction: 5: 0101101--111dddd0011111101---110 | if (! p0) Rd = #0 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a703fc6) { + // Instruction: 5: 0101101--111dddd0011111111---110 | if (! p0) Rd = #0 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a703fc0) { + // Instruction: 5: 0101101--111dddd0011111111---0-- | if (! p0) Rd = #0 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a703000) { + // Instruction: 5: 0101101--111eeee00110iiissssdddd | if (! p0) Re = #0 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMB__RS____U3_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a702000) { + // Instruction: 5: 0101101--111eeee00100iiissssdddd | if (! p0) Re = #0 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a702800) { + // Instruction: 5: 0101101--111eeee00101iiissssdddd | if (! p0) Re = #0 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMUH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x5a703c00) { + // Instruction: 5: 0101101--111eeee0011110iiiiidddd | if (! p0) Re = #0 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMW__SP____U5_2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x5a703e00) { + // Instruction: 5: 0101101--111eeee00111110iiiiiddd | if (! p0) Re = #0 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___MEMD__SP____U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a503f40) { + // Instruction: 5: 0101101--101dddd0011111101---0-- | if (! p0.new) Rd = #0 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a503f00) { + // Instruction: 5: 0101101--101dddd0011111100---0-- | if (! p0.new) Rd = #0 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___DEALLOCFRAME; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503f45) { + // Instruction: 5: 0101101--101dddd0011111101---101 | if (! p0.new) Rd = #0 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503fc5) { + // Instruction: 5: 0101101--101dddd0011111111---101 | if (! p0.new) Rd = #0 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503f47) { + // Instruction: 5: 0101101--101dddd0011111101---111 | if (! p0.new) Rd = #0 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503fc7) { + // Instruction: 5: 0101101--101dddd0011111111---111 | if (! p0.new) Rd = #0 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503f44) { + // Instruction: 5: 0101101--101dddd0011111101---100 | if (! p0.new) Rd = #0 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503fc4) { + // Instruction: 5: 0101101--101dddd0011111111---100 | if (! p0.new) Rd = #0 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503f46) { + // Instruction: 5: 0101101--101dddd0011111101---110 | if (! p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a503fc6) { + // Instruction: 5: 0101101--101dddd0011111111---110 | if (! p0.new) Rd = #0 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a503fc0) { + // Instruction: 5: 0101101--101dddd0011111111---0-- | if (! p0.new) Rd = #0 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a503000) { + // Instruction: 5: 0101101--101eeee00110iiissssdddd | if (! p0.new) Re = #0 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMB__RS____U3_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a502000) { + // Instruction: 5: 0101101--101eeee00100iiissssdddd | if (! p0.new) Re = #0 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a502800) { + // Instruction: 5: 0101101--101eeee00101iiissssdddd | if (! p0.new) Re = #0 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMUH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x5a503c00) { + // Instruction: 5: 0101101--101eeee0011110iiiiidddd | if (! p0.new) Re = #0 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMW__SP____U5_2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x5a503e00) { + // Instruction: 5: 0101101--101eeee00111110iiiiiddd | if (! p0.new) Re = #0 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___MEMD__SP____U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a603f40) { + // Instruction: 5: 0101101--110dddd0011111101---0-- | if (p0) Rd = #0 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a603f00) { + // Instruction: 5: 0101101--110dddd0011111100---0-- | if (p0) Rd = #0 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___DEALLOCFRAME; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603f45) { + // Instruction: 5: 0101101--110dddd0011111101---101 | if (p0) Rd = #0 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603fc5) { + // Instruction: 5: 0101101--110dddd0011111111---101 | if (p0) Rd = #0 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603f47) { + // Instruction: 5: 0101101--110dddd0011111101---111 | if (p0) Rd = #0 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603fc7) { + // Instruction: 5: 0101101--110dddd0011111111---111 | if (p0) Rd = #0 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603f44) { + // Instruction: 5: 0101101--110dddd0011111101---100 | if (p0) Rd = #0 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603fc4) { + // Instruction: 5: 0101101--110dddd0011111111---100 | if (p0) Rd = #0 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603f46) { + // Instruction: 5: 0101101--110dddd0011111101---110 | if (p0) Rd = #0 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a603fc6) { + // Instruction: 5: 0101101--110dddd0011111111---110 | if (p0) Rd = #0 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a603fc0) { + // Instruction: 5: 0101101--110dddd0011111111---0-- | if (p0) Rd = #0 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a603000) { + // Instruction: 5: 0101101--110eeee00110iiissssdddd | if (p0) Re = #0 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMB__RS____U3_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a602000) { + // Instruction: 5: 0101101--110eeee00100iiissssdddd | if (p0) Re = #0 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a602800) { + // Instruction: 5: 0101101--110eeee00101iiissssdddd | if (p0) Re = #0 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMUH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x5a603c00) { + // Instruction: 5: 0101101--110eeee0011110iiiiidddd | if (p0) Re = #0 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMW__SP____U5_2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x5a603e00) { + // Instruction: 5: 0101101--110eeee00111110iiiiiddd | if (p0) Re = #0 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RE____0___RDD___MEMD__SP____U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a403f40) { + // Instruction: 5: 0101101--100dddd0011111101---0-- | if (p0.new) Rd = #0 ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a403f00) { + // Instruction: 5: 0101101--100dddd0011111100---0-- | if (p0.new) Rd = #0 ; deallocframe + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___DEALLOCFRAME; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403f45) { + // Instruction: 5: 0101101--100dddd0011111101---101 | if (p0.new) Rd = #0 ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403fc5) { + // Instruction: 5: 0101101--100dddd0011111111---101 | if (p0.new) Rd = #0 ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403f47) { + // Instruction: 5: 0101101--100dddd0011111101---111 | if (p0.new) Rd = #0 ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403fc7) { + // Instruction: 5: 0101101--100dddd0011111111---111 | if (p0.new) Rd = #0 ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403f44) { + // Instruction: 5: 0101101--100dddd0011111101---100 | if (p0.new) Rd = #0 ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403fc4) { + // Instruction: 5: 0101101--100dddd0011111111---100 | if (p0.new) Rd = #0 ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0__JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403f46) { + // Instruction: 5: 0101101--100dddd0011111101---110 | if (p0.new) Rd = #0 ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc7) == 0x5a403fc6) { + // Instruction: 5: 0101101--100dddd0011111111---110 | if (p0.new) Rd = #0 ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ffc4) == 0x5a403fc0) { + // Instruction: 5: 0101101--100dddd0011111111---0-- | if (p0.new) Rd = #0 ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___JUMPR_LR; + hi->op_count = 1; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a403000) { + // Instruction: 5: 0101101--100eeee00110iiissssdddd | if (p0.new) Re = #0 ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMB__RS____U3_0_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a402000) { + // Instruction: 5: 0101101--100eeee00100iiissssdddd | if (p0.new) Re = #0 ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x5a402800) { + // Instruction: 5: 0101101--100eeee00101iiissssdddd | if (p0.new) Re = #0 ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMUH__RS____U3_1_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x5a403c00) { + // Instruction: 5: 0101101--100eeee0011110iiiiidddd | if (p0.new) Re = #0 ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMW__SP____U5_2_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x5a403e00) { + // Instruction: 5: 0101101--100eeee00111110iiiiiddd | if (p0.new) Re = #0 ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___MEMD__SP____U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x59003c00) { + // Instruction: 5: 01011001ssss--II0011110iiiiidddd | p0 = cmp.eq (Rs, #U2) ; Rd = memw (Sp + #u5:2) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RD___MEMW__SP____U5_2_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memw (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x59003e00) { + // Instruction: 5: 01011001ssss--II00111110iiiiiddd | p0 = cmp.eq (Rs, #U2) ; Rdd = memd (Sp + #u5:3) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___MEMD__SP____U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf8) >> 3) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memd (Sp + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x59003f40) { + // Instruction: 5: 01011001ssss--ii0011111101---0-- | p0 = cmp.eq (Rs, #u2) ; dealloc_return + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x59003f00) { + // Instruction: 5: 01011001ssss--ii0011111100---0-- | p0 = cmp.eq (Rs, #u2) ; deallocframe + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____DEALLOCFRAME; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; deallocframe", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003f45) { + // Instruction: 5: 01011001ssss--ii0011111101---101 | p0 = cmp.eq (Rs, #u2) ; if (! p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003fc5) { + // Instruction: 5: 01011001ssss--ii0011111111---101 | p0 = cmp.eq (Rs, #u2) ; if (! p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003f47) { + // Instruction: 5: 01011001ssss--ii0011111101---111 | p0 = cmp.eq (Rs, #u2) ; if (! p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003fc7) { + // Instruction: 5: 01011001ssss--ii0011111111---111 | p0 = cmp.eq (Rs, #u2) ; if (! p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (! p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003f44) { + // Instruction: 5: 01011001ssss--ii0011111101---100 | p0 = cmp.eq (Rs, #u2) ; if (p0) dealloc_return + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__DEALLOC_RETURN; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0) dealloc_return", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003fc4) { + // Instruction: 5: 01011001ssss--ii0011111111---100 | p0 = cmp.eq (Rs, #u2) ; if (p0) jumpr Lr + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0) jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003f46) { + // Instruction: 5: 01011001ssss--ii0011111101---110 | p0 = cmp.eq (Rs, #u2) ; if (p0.new) dealloc_return:nt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__DEALLOC_RETURN_NT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0.new) dealloc_return:nt", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc7) == 0x59003fc6) { + // Instruction: 5: 01011001ssss--ii0011111111---110 | p0 = cmp.eq (Rs, #u2) ; if (p0.new) jumpr:nt Lr + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__JUMPR_NT_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; if (p0.new) jumpr:nt Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00ffc4) == 0x59003fc0) { + // Instruction: 5: 01011001ssss--ii0011111111---0-- | p0 = cmp.eq (Rs, #u2) ; jumpr Lr + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____JUMPR_LR; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; jumpr Lr", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x59003000) { + // Instruction: 5: 01011001uuuu--II00110iiissssdddd | p0 = cmp.eq (Ru, #U2) ; Rd = memb (Rs + #u3:0) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMB__RS____U3_0_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memb (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x59002000) { + // Instruction: 5: 01011001uuuu--II00100iiissssdddd | p0 = cmp.eq (Ru, #U2) ; Rd = memh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x59002800) { + // Instruction: 5: 01011001uuuu--II00101iiissssdddd | p0 = cmp.eq (Ru, #U2) ; Rd = memuh (Rs + #u3:1) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMUH__RS____U3_1_; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rd + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; %s = memuh (%s + 0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + break; + } + case 0x6: { + if ((hi_u32 & 0xfe40f000) == 0x7a001000) { + // Instruction: 6: 0111101--0--dddd0001iiiisssstttt | Rd = #-1 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe40f000) == 0x7a000000) { + // Instruction: 6: 0111101--0--dddd0000iiiisssstttt | Rd = #-1 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x68001000) { + // Instruction: 6: 011010IIIIIIdddd0001iiiisssstttt | Rd = #U6 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x68000000) { + // Instruction: 6: 011010IIIIIIdddd0000iiiisssstttt | Rd = #U6 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x70001000) { + // Instruction: 6: 01110000uuuudddd0001iiiisssstttt | Rd = Ru ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x70000000) { + // Instruction: 6: 01110000uuuudddd0000iiiisssstttt | Rd = Ru ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x73001000) { + // Instruction: 6: 01110011uuuudddd0001iiiisssstttt | Rd = add (Ru, #-1) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x73000000) { + // Instruction: 6: 01110011uuuudddd0000iiiisssstttt | Rd = add (Ru, #-1) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x71001000) { + // Instruction: 6: 01110001uuuudddd0001iiiisssstttt | Rd = add (Ru, #1) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x71000000) { + // Instruction: 6: 01110001uuuudddd0000iiiisssstttt | Rd = add (Ru, #1) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x6c001000) { + // Instruction: 6: 011011IIIIIIdddd0001iiiisssstttt | Rd = add (Sp, #U6:2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f000) == 0x6c000000) { + // Instruction: 6: 011011IIIIIIdddd0000iiiisssstttt | Rd = add (Sp, #U6:2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x72001000) { + // Instruction: 6: 01110010uuuudddd0001iiiisssstttt | Rd = and (Ru, #1) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x72000000) { + // Instruction: 6: 01110010uuuudddd0000iiiisssstttt | Rd = and (Ru, #1) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x77001000) { + // Instruction: 6: 01110111uuuudddd0001iiiisssstttt | Rd = and (Ru, #255) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x77000000) { + // Instruction: 6: 01110111uuuudddd0000iiiisssstttt | Rd = and (Ru, #255) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x75001000) { + // Instruction: 6: 01110101uuuudddd0001iiiisssstttt | Rd = sxtb (Ru) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x75000000) { + // Instruction: 6: 01110101uuuudddd0000iiiisssstttt | Rd = sxtb (Ru) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x74001000) { + // Instruction: 6: 01110100uuuudddd0001iiiisssstttt | Rd = sxth (Ru) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x74000000) { + // Instruction: 6: 01110100uuuudddd0000iiiisssstttt | Rd = sxth (Ru) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x76001000) { + // Instruction: 6: 01110110uuuudddd0001iiiisssstttt | Rd = zxth (Ru) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x76000000) { + // Instruction: 6: 01110110uuuudddd0000iiiisssstttt | Rd = zxth (Ru) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c001000) { + // Instruction: 6: 011111-0-II00ddd0001iiiisssstttt | Rdd = combine (#0, #U2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c000000) { + // Instruction: 6: 011111-0-II00ddd0000iiiisssstttt | Rdd = combine (#0, #U2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x7d001000) { + // Instruction: 6: 011111-1uuuu0ddd0001iiiisssstttt | Rdd = combine (#0, Ru) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x7d000000) { + // Instruction: 6: 011111-1uuuu0ddd0000iiiisssstttt | Rdd = combine (#0, Ru) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c081000) { + // Instruction: 6: 011111-0-II01ddd0001iiiisssstttt | Rdd = combine (#1, #U2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c080000) { + // Instruction: 6: 011111-0-II01ddd0000iiiisssstttt | Rdd = combine (#1, #U2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c101000) { + // Instruction: 6: 011111-0-II10ddd0001iiiisssstttt | Rdd = combine (#2, #U2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c100000) { + // Instruction: 6: 011111-0-II10ddd0000iiiisssstttt | Rdd = combine (#2, #U2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c181000) { + // Instruction: 6: 011111-0-II11ddd0001iiiisssstttt | Rdd = combine (#3, #U2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f000) == 0x7c180000) { + // Instruction: 6: 011111-0-II11ddd0000iiiisssstttt | Rdd = combine (#3, #U2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x7d081000) { + // Instruction: 6: 011111-1uuuu1ddd0001iiiisssstttt | Rdd = combine (Ru, #0) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08f000) == 0x7d080000) { + // Instruction: 6: 011111-1uuuu1ddd0000iiiisssstttt | Rdd = combine (Ru, #0) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x78001000) { + // Instruction: 6: 01111000uuuuxxxx0001iiiisssstttt | Rx = add (Ru, Rx) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x78000000) { + // Instruction: 6: 01111000uuuuxxxx0000iiiisssstttt | Rx = add (Ru, Rx) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x60001000) { + // Instruction: 6: 01100IIIIIIIxxxx0001iiiisssstttt | Rx = add (Rx, #S7) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x60000000) { + // Instruction: 6: 01100IIIIIIIxxxx0000iiiisssstttt | Rx = add (Rx, #S7) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x78001000) { + // Instruction: 6: 01111000uuuuxxxx0001iiiisssstttt | Rx = add (Rx, Ru) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x78000000) { + // Instruction: 6: 01111000uuuuxxxx0000iiiisssstttt | Rx = add (Rx, Ru) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a701000) { + // Instruction: 6: 0111101--111dddd0001iiiisssstttt | if (! p0) Rd = #0 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a700000) { + // Instruction: 6: 0111101--111dddd0000iiiisssstttt | if (! p0) Rd = #0 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a501000) { + // Instruction: 6: 0111101--101dddd0001iiiisssstttt | if (! p0.new) Rd = #0 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a500000) { + // Instruction: 6: 0111101--101dddd0000iiiisssstttt | if (! p0.new) Rd = #0 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a601000) { + // Instruction: 6: 0111101--110dddd0001iiiisssstttt | if (p0) Rd = #0 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a600000) { + // Instruction: 6: 0111101--110dddd0000iiiisssstttt | if (p0) Rd = #0 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a401000) { + // Instruction: 6: 0111101--100dddd0001iiiisssstttt | if (p0.new) Rd = #0 ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f000) == 0x7a400000) { + // Instruction: 6: 0111101--100dddd0000iiiisssstttt | if (p0.new) Rd = #0 ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x79001000) { + // Instruction: 6: 01111001uuuu--II0001iiiisssstttt | p0 = cmp.eq (Ru, #U2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x79000000) { + // Instruction: 6: 01111001uuuu--II0000iiiisssstttt | p0 = cmp.eq (Ru, #U2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + break; + } + case 0x7: { + if ((hi_u32 & 0xfe40fe00) == 0x7a003c00) { + // Instruction: 7: 0111101--0--dddd0011110iiiii---- | Rd = #-1 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD_____1___ALLOCFRAME___U5_3_; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe40ff00) == 0x7a003200) { + // Instruction: 7: 0111101--0--dddd00110010ssssiiii | Rd = #-1 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40ff00) == 0x7a003300) { + // Instruction: 7: 0111101--0--dddd00110011ssssiiii | Rd = #-1 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fe00) == 0x7a002a00) { + // Instruction: 7: 0111101--0--dddd0010101iiiiiittt | Rd = #-1 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMD__SP____S6_3____RTT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe40f800) == 0x7a002000) { + // Instruction: 7: 0111101--0--dddd00100iiisssstttt | Rd = #-1 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMH__RS____U3_1____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe40ff00) == 0x7a003000) { + // Instruction: 7: 0111101--0--dddd00110000ssssiiii | Rd = #-1 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40ff00) == 0x7a003100) { + // Instruction: 7: 0111101--0--dddd00110001ssssiiii | Rd = #-1 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe40fe00) == 0x7a002800) { + // Instruction: 7: 0111101--0--dddd0010100iiiiitttt | Rd = #-1 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD_____1___MEMW__SP____U5_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = #-1 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x68003c00) { + // Instruction: 7: 011010IIIIIIdddd0011110iiiii---- | Rd = #U6 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD____U6___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x68003200) { + // Instruction: 7: 011010IIIIIIdddd00110010ssssiiii | Rd = #U6 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x68003300) { + // Instruction: 7: 011010IIIIIIdddd00110011ssssiiii | Rd = #U6 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x68002a00) { + // Instruction: 7: 011010IIIIIIdddd0010101iiiiiittt | Rd = #U6 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x68002000) { + // Instruction: 7: 011010IIIIIIdddd00100iiisssstttt | Rd = #U6 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x68003000) { + // Instruction: 7: 011010IIIIIIdddd00110000ssssiiii | Rd = #U6 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x68003100) { + // Instruction: 7: 011010IIIIIIdddd00110001ssssiiii | Rd = #U6 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x68002800) { + // Instruction: 7: 011010IIIIIIdddd0010100iiiiitttt | Rd = #U6 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD____U6___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = 0x%x ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x70003c00) { + // Instruction: 7: 01110000ssssdddd0011110iiiii---- | Rd = Rs ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___RS___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x70002a00) { + // Instruction: 7: 01110000ssssdddd0010101iiiiiittt | Rd = Rs ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___RS___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x70002800) { + // Instruction: 7: 01110000ssssdddd0010100iiiiitttt | Rd = Rs ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___RS___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x70003200) { + // Instruction: 7: 01110000uuuudddd00110010ssssiiii | Rd = Ru ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x70003300) { + // Instruction: 7: 01110000uuuudddd00110011ssssiiii | Rd = Ru ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x70002000) { + // Instruction: 7: 01110000uuuudddd00100iiisssstttt | Rd = Ru ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x70003000) { + // Instruction: 7: 01110000uuuudddd00110000ssssiiii | Rd = Ru ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x70003100) { + // Instruction: 7: 01110000uuuudddd00110001ssssiiii | Rd = Ru ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = %s ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x73003c00) { + // Instruction: 7: 01110011ssssdddd0011110iiiii---- | Rd = add (Rs, #-1) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x73002a00) { + // Instruction: 7: 01110011ssssdddd0010101iiiiiittt | Rd = add (Rs, #-1) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x73002800) { + // Instruction: 7: 01110011ssssdddd0010100iiiiitttt | Rd = add (Rs, #-1) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS____1____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x71003c00) { + // Instruction: 7: 01110001ssssdddd0011110iiiii---- | Rd = add (Rs, #1) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x71002a00) { + // Instruction: 7: 01110001ssssdddd0010101iiiiiittt | Rd = add (Rs, #1) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x71002800) { + // Instruction: 7: 01110001ssssdddd0010100iiiiitttt | Rd = add (Rs, #1) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RS___1____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x73003200) { + // Instruction: 7: 01110011uuuudddd00110010ssssiiii | Rd = add (Ru, #-1) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x73003300) { + // Instruction: 7: 01110011uuuudddd00110011ssssiiii | Rd = add (Ru, #-1) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x73002000) { + // Instruction: 7: 01110011uuuudddd00100iiisssstttt | Rd = add (Ru, #-1) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x73003000) { + // Instruction: 7: 01110011uuuudddd00110000ssssiiii | Rd = add (Ru, #-1) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x73003100) { + // Instruction: 7: 01110011uuuudddd00110001ssssiiii | Rd = add (Ru, #-1) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #-1) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x71003200) { + // Instruction: 7: 01110001uuuudddd00110010ssssiiii | Rd = add (Ru, #1) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x71003300) { + // Instruction: 7: 01110001uuuudddd00110011ssssiiii | Rd = add (Ru, #1) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x71002000) { + // Instruction: 7: 01110001uuuudddd00100iiisssstttt | Rd = add (Ru, #1) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x71003000) { + // Instruction: 7: 01110001uuuudddd00110000ssssiiii | Rd = add (Ru, #1) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x71003100) { + // Instruction: 7: 01110001uuuudddd00110001ssssiiii | Rd = add (Ru, #1) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, #1) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x6c003c00) { + // Instruction: 7: 011011IIIIIIdddd0011110iiiii---- | Rd = add (Sp, #U6:2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x6c003200) { + // Instruction: 7: 011011IIIIIIdddd00110010ssssiiii | Rd = add (Sp, #U6:2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x6c003300) { + // Instruction: 7: 011011IIIIIIdddd00110011ssssiiii | Rd = add (Sp, #U6:2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x6c002a00) { + // Instruction: 7: 011011IIIIIIdddd0010101iiiiiittt | Rd = add (Sp, #U6:2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfc00f800) == 0x6c002000) { + // Instruction: 7: 011011IIIIIIdddd00100iiisssstttt | Rd = add (Sp, #U6:2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x6c003000) { + // Instruction: 7: 011011IIIIIIdddd00110000ssssiiii | Rd = add (Sp, #U6:2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00ff00) == 0x6c003100) { + // Instruction: 7: 011011IIIIIIdddd00110001ssssiiii | Rd = add (Sp, #U6:2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00fe00) == 0x6c002800) { + // Instruction: 7: 011011IIIIIIdddd0010100iiiiitttt | Rd = add (Sp, #U6:2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Sp, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x72003c00) { + // Instruction: 7: 01110010ssssdddd0011110iiiii---- | Rd = and (Rs, #1) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x72002a00) { + // Instruction: 7: 01110010ssssdddd0010101iiiiiittt | Rd = and (Rs, #1) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x72002800) { + // Instruction: 7: 01110010ssssdddd0010100iiiiitttt | Rd = and (Rs, #1) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___1____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x77003c00) { + // Instruction: 7: 01110111ssssdddd0011110iiiii---- | Rd = and (Rs, #255) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x77002a00) { + // Instruction: 7: 01110111ssssdddd0010101iiiiiittt | Rd = and (Rs, #255) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x77002800) { + // Instruction: 7: 01110111ssssdddd0010100iiiiitttt | Rd = and (Rs, #255) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RS___255____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x72003200) { + // Instruction: 7: 01110010uuuudddd00110010ssssiiii | Rd = and (Ru, #1) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x72003300) { + // Instruction: 7: 01110010uuuudddd00110011ssssiiii | Rd = and (Ru, #1) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x72002000) { + // Instruction: 7: 01110010uuuudddd00100iiisssstttt | Rd = and (Ru, #1) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x72003000) { + // Instruction: 7: 01110010uuuudddd00110000ssssiiii | Rd = and (Ru, #1) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x72003100) { + // Instruction: 7: 01110010uuuudddd00110001ssssiiii | Rd = and (Ru, #1) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #1) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x77003200) { + // Instruction: 7: 01110111uuuudddd00110010ssssiiii | Rd = and (Ru, #255) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x77003300) { + // Instruction: 7: 01110111uuuudddd00110011ssssiiii | Rd = and (Ru, #255) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x77002000) { + // Instruction: 7: 01110111uuuudddd00100iiisssstttt | Rd = and (Ru, #255) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x77003000) { + // Instruction: 7: 01110111uuuudddd00110000ssssiiii | Rd = and (Ru, #255) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x77003100) { + // Instruction: 7: 01110111uuuudddd00110001ssssiiii | Rd = and (Ru, #255) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = and (%s, #255) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x75003c00) { + // Instruction: 7: 01110101ssssdddd0011110iiiii---- | Rd = sxtb (Rs) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x75002a00) { + // Instruction: 7: 01110101ssssdddd0010101iiiiiittt | Rd = sxtb (Rs) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x75002800) { + // Instruction: 7: 01110101ssssdddd0010100iiiiitttt | Rd = sxtb (Rs) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RS____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x75003200) { + // Instruction: 7: 01110101uuuudddd00110010ssssiiii | Rd = sxtb (Ru) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x75003300) { + // Instruction: 7: 01110101uuuudddd00110011ssssiiii | Rd = sxtb (Ru) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x75002000) { + // Instruction: 7: 01110101uuuudddd00100iiisssstttt | Rd = sxtb (Ru) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x75003000) { + // Instruction: 7: 01110101uuuudddd00110000ssssiiii | Rd = sxtb (Ru) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x75003100) { + // Instruction: 7: 01110101uuuudddd00110001ssssiiii | Rd = sxtb (Ru) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxtb (%s) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x74003c00) { + // Instruction: 7: 01110100ssssdddd0011110iiiii---- | Rd = sxth (Rs) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x74002a00) { + // Instruction: 7: 01110100ssssdddd0010101iiiiiittt | Rd = sxth (Rs) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x74002800) { + // Instruction: 7: 01110100ssssdddd0010100iiiiitttt | Rd = sxth (Rs) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RS____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x74003200) { + // Instruction: 7: 01110100uuuudddd00110010ssssiiii | Rd = sxth (Ru) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x74003300) { + // Instruction: 7: 01110100uuuudddd00110011ssssiiii | Rd = sxth (Ru) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x74002000) { + // Instruction: 7: 01110100uuuudddd00100iiisssstttt | Rd = sxth (Ru) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x74003000) { + // Instruction: 7: 01110100uuuudddd00110000ssssiiii | Rd = sxth (Ru) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x74003100) { + // Instruction: 7: 01110100uuuudddd00110001ssssiiii | Rd = sxth (Ru) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = sxth (%s) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x76003c00) { + // Instruction: 7: 01110110ssssdddd0011110iiiii---- | Rd = zxth (Rs) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x76002a00) { + // Instruction: 7: 01110110ssssdddd0010101iiiiiittt | Rd = zxth (Rs) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x76002800) { + // Instruction: 7: 01110110ssssdddd0010100iiiiitttt | Rd = zxth (Rs) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RS____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x76003200) { + // Instruction: 7: 01110110uuuudddd00110010ssssiiii | Rd = zxth (Ru) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x76003300) { + // Instruction: 7: 01110110uuuudddd00110011ssssiiii | Rd = zxth (Ru) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x76002000) { + // Instruction: 7: 01110110uuuudddd00100iiisssstttt | Rd = zxth (Ru) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x76003000) { + // Instruction: 7: 01110110uuuudddd00110000ssssiiii | Rd = zxth (Ru) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x76003100) { + // Instruction: 7: 01110110uuuudddd00110001ssssiiii | Rd = zxth (Ru) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = zxth (%s) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c003c00) { + // Instruction: 7: 011111-0-II00ddd0011110iiiii---- | Rdd = combine (#0, #U2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c003200) { + // Instruction: 7: 011111-0-II00ddd00110010ssssiiii | Rdd = combine (#0, #U2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c003300) { + // Instruction: 7: 011111-0-II00ddd00110011ssssiiii | Rdd = combine (#0, #U2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c002a00) { + // Instruction: 7: 011111-0-II00ddd0010101iiiiiittt | Rdd = combine (#0, #U2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x7c002000) { + // Instruction: 7: 011111-0-II00ddd00100iiisssstttt | Rdd = combine (#0, #U2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c003000) { + // Instruction: 7: 011111-0-II00ddd00110000ssssiiii | Rdd = combine (#0, #U2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c003100) { + // Instruction: 7: 011111-0-II00ddd00110001ssssiiii | Rdd = combine (#0, #U2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c002800) { + // Instruction: 7: 011111-0-II00ddd0010100iiiiitttt | Rdd = combine (#0, #U2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d003c00) { + // Instruction: 7: 011111-1ssss0ddd0011110iiiii---- | Rdd = combine (#0, Rs) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d002a00) { + // Instruction: 7: 011111-1ssss0ddd0010101iiiiiittt | Rdd = combine (#0, Rs) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d002800) { + // Instruction: 7: 011111-1ssss0ddd0010100iiiiitttt | Rdd = combine (#0, Rs) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RS____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d003200) { + // Instruction: 7: 011111-1uuuu0ddd00110010ssssiiii | Rdd = combine (#0, Ru) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d003300) { + // Instruction: 7: 011111-1uuuu0ddd00110011ssssiiii | Rdd = combine (#0, Ru) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x7d002000) { + // Instruction: 7: 011111-1uuuu0ddd00100iiisssstttt | Rdd = combine (#0, Ru) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d003000) { + // Instruction: 7: 011111-1uuuu0ddd00110000ssssiiii | Rdd = combine (#0, Ru) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d003100) { + // Instruction: 7: 011111-1uuuu0ddd00110001ssssiiii | Rdd = combine (#0, Ru) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#0, %s) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c083c00) { + // Instruction: 7: 011111-0-II01ddd0011110iiiii---- | Rdd = combine (#1, #U2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c083200) { + // Instruction: 7: 011111-0-II01ddd00110010ssssiiii | Rdd = combine (#1, #U2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c083300) { + // Instruction: 7: 011111-0-II01ddd00110011ssssiiii | Rdd = combine (#1, #U2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c082a00) { + // Instruction: 7: 011111-0-II01ddd0010101iiiiiittt | Rdd = combine (#1, #U2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x7c082000) { + // Instruction: 7: 011111-0-II01ddd00100iiisssstttt | Rdd = combine (#1, #U2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c083000) { + // Instruction: 7: 011111-0-II01ddd00110000ssssiiii | Rdd = combine (#1, #U2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c083100) { + // Instruction: 7: 011111-0-II01ddd00110001ssssiiii | Rdd = combine (#1, #U2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c082800) { + // Instruction: 7: 011111-0-II01ddd0010100iiiiitttt | Rdd = combine (#1, #U2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#1, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c103c00) { + // Instruction: 7: 011111-0-II10ddd0011110iiiii---- | Rdd = combine (#2, #U2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c103200) { + // Instruction: 7: 011111-0-II10ddd00110010ssssiiii | Rdd = combine (#2, #U2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c103300) { + // Instruction: 7: 011111-0-II10ddd00110011ssssiiii | Rdd = combine (#2, #U2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c102a00) { + // Instruction: 7: 011111-0-II10ddd0010101iiiiiittt | Rdd = combine (#2, #U2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x7c102000) { + // Instruction: 7: 011111-0-II10ddd00100iiisssstttt | Rdd = combine (#2, #U2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c103000) { + // Instruction: 7: 011111-0-II10ddd00110000ssssiiii | Rdd = combine (#2, #U2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c103100) { + // Instruction: 7: 011111-0-II10ddd00110001ssssiiii | Rdd = combine (#2, #U2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c102800) { + // Instruction: 7: 011111-0-II10ddd0010100iiiiitttt | Rdd = combine (#2, #U2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#2, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c183c00) { + // Instruction: 7: 011111-0-II11ddd0011110iiiii---- | Rdd = combine (#3, #U2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c183200) { + // Instruction: 7: 011111-0-II11ddd00110010ssssiiii | Rdd = combine (#3, #U2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c183300) { + // Instruction: 7: 011111-0-II11ddd00110011ssssiiii | Rdd = combine (#3, #U2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c182a00) { + // Instruction: 7: 011111-0-II11ddd0010101iiiiiittt | Rdd = combine (#3, #U2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd18f800) == 0x7c182000) { + // Instruction: 7: 011111-0-II11ddd00100iiisssstttt | Rdd = combine (#3, #U2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c183000) { + // Instruction: 7: 011111-0-II11ddd00110000ssssiiii | Rdd = combine (#3, #U2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18ff00) == 0x7c183100) { + // Instruction: 7: 011111-0-II11ddd00110001ssssiiii | Rdd = combine (#3, #U2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd18fe00) == 0x7c182800) { + // Instruction: 7: 011111-0-II11ddd0010100iiiiitttt | Rdd = combine (#3, #U2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (#3, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d083c00) { + // Instruction: 7: 011111-1ssss1ddd0011110iiiii---- | Rdd = combine (Rs, #0) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d082a00) { + // Instruction: 7: 011111-1ssss1ddd0010101iiiiiittt | Rdd = combine (Rs, #0) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08fe00) == 0x7d082800) { + // Instruction: 7: 011111-1ssss1ddd0010100iiiiitttt | Rdd = combine (Rs, #0) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RS___0____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d083200) { + // Instruction: 7: 011111-1uuuu1ddd00110010ssssiiii | Rdd = combine (Ru, #0) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d083300) { + // Instruction: 7: 011111-1uuuu1ddd00110011ssssiiii | Rdd = combine (Ru, #0) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08f800) == 0x7d082000) { + // Instruction: 7: 011111-1uuuu1ddd00100iiisssstttt | Rdd = combine (Ru, #0) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d083000) { + // Instruction: 7: 011111-1uuuu1ddd00110000ssssiiii | Rdd = combine (Ru, #0) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfd08ff00) == 0x7d083100) { + // Instruction: 7: 011111-1uuuu1ddd00110001ssssiiii | Rdd = combine (Ru, #0) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = combine (%s, #0) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78003c00) { + // Instruction: 7: 01111000ssssxxxx0011110iiiii---- | Rx = add (Rs, Rx) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78002a00) { + // Instruction: 7: 01111000ssssxxxx0010101iiiiiittt | Rx = add (Rs, Rx) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78002800) { + // Instruction: 7: 01111000ssssxxxx0010100iiiiitttt | Rx = add (Rs, Rx) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RS__RX____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003200) { + // Instruction: 7: 01111000uuuuxxxx00110010ssssiiii | Rx = add (Ru, Rx) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003300) { + // Instruction: 7: 01111000uuuuxxxx00110011ssssiiii | Rx = add (Ru, Rx) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x78002000) { + // Instruction: 7: 01111000uuuuxxxx00100iiisssstttt | Rx = add (Ru, Rx) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003000) { + // Instruction: 7: 01111000uuuuxxxx00110000ssssiiii | Rx = add (Ru, Rx) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003100) { + // Instruction: 7: 01111000uuuuxxxx00110001ssssiiii | Rx = add (Ru, Rx) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (%s, Rx) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x60003c00) { + // Instruction: 7: 01100IIIIIIIxxxx0011110iiiii---- | Rx = add (Rx, #S7) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x60003200) { + // Instruction: 7: 01100IIIIIIIxxxx00110010ssssiiii | Rx = add (Rx, #S7) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x60003300) { + // Instruction: 7: 01100IIIIIIIxxxx00110011ssssiiii | Rx = add (Rx, #S7) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x60002a00) { + // Instruction: 7: 01100IIIIIIIxxxx0010101iiiiiittt | Rx = add (Rx, #S7) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800f800) == 0x60002000) { + // Instruction: 7: 01100IIIIIIIxxxx00100iiisssstttt | Rx = add (Rx, #S7) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x60003000) { + // Instruction: 7: 01100IIIIIIIxxxx00110000ssssiiii | Rx = add (Rx, #S7) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0x60003100) { + // Instruction: 7: 01100IIIIIIIxxxx00110001ssssiiii | Rx = add (Rx, #S7) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0x60002800) { + // Instruction: 7: 01100IIIIIIIxxxx0010100iiiiitttt | Rx = add (Rx, #S7) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7f00000) >> 20); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78003c00) { + // Instruction: 7: 01111000ssssxxxx0011110iiiii---- | Rx = add (Rx, Rs) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78002a00) { + // Instruction: 7: 01111000ssssxxxx0010101iiiiiittt | Rx = add (Rx, Rs) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x78002800) { + // Instruction: 7: 01111000ssssxxxx0010100iiiiitttt | Rx = add (Rx, Rs) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RS____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003200) { + // Instruction: 7: 01111000uuuuxxxx00110010ssssiiii | Rx = add (Rx, Ru) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003300) { + // Instruction: 7: 01111000uuuuxxxx00110011ssssiiii | Rx = add (Rx, Ru) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x78002000) { + // Instruction: 7: 01111000uuuuxxxx00100iiisssstttt | Rx = add (Rx, Ru) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003000) { + // Instruction: 7: 01111000uuuuxxxx00110000ssssiiii | Rx = add (Rx, Ru) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x78003100) { + // Instruction: 7: 01111000uuuuxxxx00110001ssssiiii | Rx = add (Rx, Ru) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = add (Rx, %s) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a703c00) { + // Instruction: 7: 0111101--111dddd0011110iiiii---- | if (! p0) Rd = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___ALLOCFRAME___U5_3_; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a703200) { + // Instruction: 7: 0111101--111dddd00110010ssssiiii | if (! p0) Rd = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a703300) { + // Instruction: 7: 0111101--111dddd00110011ssssiiii | if (! p0) Rd = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a702a00) { + // Instruction: 7: 0111101--111dddd0010101iiiiiittt | if (! p0) Rd = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMD__SP____S6_3____RTT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x7a702000) { + // Instruction: 7: 0111101--111dddd00100iiisssstttt | if (! p0) Rd = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMH__RS____U3_1____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a703000) { + // Instruction: 7: 0111101--111dddd00110000ssssiiii | if (! p0) Rd = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a703100) { + // Instruction: 7: 0111101--111dddd00110001ssssiiii | if (! p0) Rd = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a702800) { + // Instruction: 7: 0111101--111dddd0010100iiiiitttt | if (! p0) Rd = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__SP____U5_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0) %s = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a503c00) { + // Instruction: 7: 0111101--101dddd0011110iiiii---- | if (! p0.new) Rd = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___ALLOCFRAME___U5_3_; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a503200) { + // Instruction: 7: 0111101--101dddd00110010ssssiiii | if (! p0.new) Rd = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a503300) { + // Instruction: 7: 0111101--101dddd00110011ssssiiii | if (! p0.new) Rd = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a502a00) { + // Instruction: 7: 0111101--101dddd0010101iiiiiittt | if (! p0.new) Rd = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMD__SP____S6_3____RTT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x7a502000) { + // Instruction: 7: 0111101--101dddd00100iiisssstttt | if (! p0.new) Rd = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMH__RS____U3_1____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a503000) { + // Instruction: 7: 0111101--101dddd00110000ssssiiii | if (! p0.new) Rd = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a503100) { + // Instruction: 7: 0111101--101dddd00110001ssssiiii | if (! p0.new) Rd = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a502800) { + // Instruction: 7: 0111101--101dddd0010100iiiiitttt | if (! p0.new) Rd = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__SP____U5_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (! p0.new) %s = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a603c00) { + // Instruction: 7: 0111101--110dddd0011110iiiii---- | if (p0) Rd = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___ALLOCFRAME___U5_3_; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a603200) { + // Instruction: 7: 0111101--110dddd00110010ssssiiii | if (p0) Rd = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a603300) { + // Instruction: 7: 0111101--110dddd00110011ssssiiii | if (p0) Rd = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a602a00) { + // Instruction: 7: 0111101--110dddd0010101iiiiiittt | if (p0) Rd = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMD__SP____S6_3____RTT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x7a602000) { + // Instruction: 7: 0111101--110dddd00100iiisssstttt | if (p0) Rd = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMH__RS____U3_1____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a603000) { + // Instruction: 7: 0111101--110dddd00110000ssssiiii | if (p0) Rd = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a603100) { + // Instruction: 7: 0111101--110dddd00110001ssssiiii | if (p0) Rd = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a602800) { + // Instruction: 7: 0111101--110dddd0010100iiiiitttt | if (p0) Rd = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__SP____U5_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0) %s = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a403c00) { + // Instruction: 7: 0111101--100dddd0011110iiiii---- | if (p0.new) Rd = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___ALLOCFRAME___U5_3_; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a403200) { + // Instruction: 7: 0111101--100dddd00110010ssssiiii | if (p0.new) Rd = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a403300) { + // Instruction: 7: 0111101--100dddd00110011ssssiiii | if (p0.new) Rd = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a402a00) { + // Instruction: 7: 0111101--100dddd0010101iiiiiittt | if (p0.new) Rd = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMD__SP____S6_3____RTT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_regpair(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xfe70f800) == 0x7a402000) { + // Instruction: 7: 0111101--100dddd00100iiisssstttt | if (p0.new) Rd = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMH__RS____U3_1____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a403000) { + // Instruction: 7: 0111101--100dddd00110000ssssiiii | if (p0.new) Rd = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2_____0; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70ff00) == 0x7a403100) { + // Instruction: 7: 0111101--100dddd00110001ssssiiii | if (p0.new) Rd = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2_____1; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe70fe00) == 0x7a402800) { + // Instruction: 7: 0111101--100dddd0010100iiiiitttt | if (p0.new) Rd = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__SP____U5_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (p0.new) %s = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x79003c00) { + // Instruction: 7: 01111001ssss--II0011110iiiii---- | p0 = cmp.eq (Rs, #U2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x79002a00) { + // Instruction: 7: 01111001ssss--II0010101iiiiiittt | p0 = cmp.eq (Rs, #U2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0x79002800) { + // Instruction: 7: 01111001ssss--II0010100iiiiitttt | p0 = cmp.eq (Rs, #U2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x79003200) { + // Instruction: 7: 01111001uuuu--II00110010ssssiiii | p0 = cmp.eq (Ru, #U2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x79003300) { + // Instruction: 7: 01111001uuuu--II00110011ssssiiii | p0 = cmp.eq (Ru, #U2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0x79002000) { + // Instruction: 7: 01111001uuuu--II00100iiisssstttt | p0 = cmp.eq (Ru, #U2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x79003000) { + // Instruction: 7: 01111001uuuu--II00110000ssssiiii | p0 = cmp.eq (Ru, #U2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0x79003100) { + // Instruction: 7: 01111001uuuu--II00110001ssssiiii | p0 = cmp.eq (Ru, #U2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (%s, 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + break; + } + case 0x8: { + if ((hi_u32 & 0xf000f000) == 0x90001000) { + // Instruction: 8: 1001IIIIuuuudddd0001iiiisssstttt | Rd = memub (Ru + #U4:0) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0x90000000) { + // Instruction: 8: 1001IIIIuuuudddd0000iiiisssstttt | Rd = memub (Ru + #U4:0) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0x80001000) { + // Instruction: 8: 1000IIIIuuuudddd0001iiiisssstttt | Rd = memw (Ru + #U4:2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0x80000000) { + // Instruction: 8: 1000IIIIuuuudddd0000iiiisssstttt | Rd = memw (Ru + #U4:2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + break; + } + case 0x9: { + if ((hi_u32 & 0xf800f000) == 0x90003000) { + // Instruction: 9: 10010IIIuuuudddd0011iiiisssstttt | Rd = memb (Ru + #U3:0) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x90002000) { + // Instruction: 9: 10010IIIuuuudddd0010iiiisssstttt | Rd = memb (Ru + #U3:0) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x80003000) { + // Instruction: 9: 10000IIIuuuudddd0011iiiisssstttt | Rd = memh (Ru + #U3:1) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x80002000) { + // Instruction: 9: 10000IIIuuuudddd0010iiiisssstttt | Rd = memh (Ru + #U3:1) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x88003000) { + // Instruction: 9: 10001IIIuuuudddd0011iiiisssstttt | Rd = memuh (Ru + #U3:1) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800f000) == 0x88002000) { + // Instruction: 9: 10001IIIuuuudddd0010iiiisssstttt | Rd = memuh (Ru + #U3:1) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xfe00f000) == 0x9c003000) { + // Instruction: 9: 1001110IIIIIdddd0011iiiisssstttt | Rd = memw (Sp + #U5:2) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfe00f000) == 0x9c002000) { + // Instruction: 9: 1001110IIIIIdddd0010iiiisssstttt | Rd = memw (Sp + #U5:2) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x9e003000) { + // Instruction: 9: 10011110IIIIIddd0011iiiisssstttt | Rdd = memd (Sp + #U5:3) ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memb (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00f000) == 0x9e002000) { + // Instruction: 9: 10011110IIIIIddd0010iiiisssstttt | Rdd = memd (Sp + #U5:3) ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memw (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xffc4f000) == 0x9f003000) { + // Instruction: 9: 1001111100---0--0011iiiisssstttt | deallocframe ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xffc4f000) == 0x9f002000) { + // Instruction: 9: 1001111100---0--0010iiiisssstttt | deallocframe ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + break; + } + case 0xa: { + if ((hi_u32 & 0xf000f000) == 0xb0001000) { + // Instruction: 10: 1011IIIIuuuuvvvv0001iiiisssstttt | memb (Ru + #U4:0) = Rv ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0xb0000000) { + // Instruction: 10: 1011IIIIuuuuvvvv0000iiiisssstttt | memb (Ru + #U4:0) = Rv ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0xa0001000) { + // Instruction: 10: 1010IIIIuuuuvvvv0001iiiisssstttt | memw (Ru + #U4:2) = Rv ; memb (Rs + #u4:0) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMB__RS____U4_0____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memb (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000f000) == 0xa0000000) { + // Instruction: 10: 1010IIIIuuuuvvvv0000iiiisssstttt | memw (Ru + #U4:2) = Rv ; memw (Rs + #u4:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMW__RS____U4_2____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf00) >> 8) << 2; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memw (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + break; + } + case 0xb: { + if ((hi_u32 & 0xf000fe00) == 0xb0003c00) { + // Instruction: 11: 1011IIIIsssstttt0011110iiiii---- | memb (Rs + #U4:0) = Rt ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0____RT___ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xb0002a00) { + // Instruction: 11: 1011IIIIssssvvvv0010101iiiiiittt | memb (Rs + #U4:0) = Rv ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0____RV___MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xb0002800) { + // Instruction: 11: 1011IIIIssssvvvv0010100iiiiitttt | memb (Rs + #U4:0) = Rv ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0____RV___MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xb0003200) { + // Instruction: 11: 1011IIIIuuuutttt00110010ssssiiii | memb (Ru + #U4:0) = Rt ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xb0003300) { + // Instruction: 11: 1011IIIIuuuutttt00110011ssssiiii | memb (Ru + #U4:0) = Rt ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xb0003000) { + // Instruction: 11: 1011IIIIuuuutttt00110000ssssiiii | memb (Ru + #U4:0) = Rt ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xb0003100) { + // Instruction: 11: 1011IIIIuuuutttt00110001ssssiiii | memb (Ru + #U4:0) = Rt ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0xb0002000) { + // Instruction: 11: 1011IIIIuuuuvvvv00100iiisssstttt | memb (Ru + #U4:0) = Rv ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = %s ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xa0003c00) { + // Instruction: 11: 1010IIIIsssstttt0011110iiiii---- | memw (Rs + #U4:2) = Rt ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2____RT___ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xa0002a00) { + // Instruction: 11: 1010IIIIssssvvvv0010101iiiiiittt | memw (Rs + #U4:2) = Rv ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2____RV___MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xa0002800) { + // Instruction: 11: 1010IIIIssssvvvv0010100iiiiitttt | memw (Rs + #U4:2) = Rv ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2____RV___MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xa0003200) { + // Instruction: 11: 1010IIIIuuuutttt00110010ssssiiii | memw (Ru + #U4:2) = Rt ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xa0003300) { + // Instruction: 11: 1010IIIIuuuutttt00110011ssssiiii | memw (Ru + #U4:2) = Rt ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xa0003000) { + // Instruction: 11: 1010IIIIuuuutttt00110000ssssiiii | memw (Ru + #U4:2) = Rt ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xa0003100) { + // Instruction: 11: 1010IIIIuuuutttt00110001ssssiiii | memw (Ru + #U4:2) = Rt ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0xa0002000) { + // Instruction: 11: 1010IIIIuuuuvvvv00100iiisssstttt | memw (Ru + #U4:2) = Rv ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = %s ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + break; + } + case 0xc: { + if ((hi_u32 & 0xf000fe00) == 0xd0001c00) { + // Instruction: 12: 1101IIIIssssdddd0001110iiiii---- | Rd = memub (Rs + #U4:0) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xd0000a00) { + // Instruction: 12: 1101IIIIssssdddd0000101iiiiiittt | Rd = memub (Rs + #U4:0) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xd0000800) { + // Instruction: 12: 1101IIIIssssdddd0000100iiiiitttt | Rd = memub (Rs + #U4:0) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xd0001200) { + // Instruction: 12: 1101IIIIuuuudddd00010010ssssiiii | Rd = memub (Ru + #U4:0) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xd0001300) { + // Instruction: 12: 1101IIIIuuuudddd00010011ssssiiii | Rd = memub (Ru + #U4:0) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0xd0000000) { + // Instruction: 12: 1101IIIIuuuudddd00000iiisssstttt | Rd = memub (Ru + #U4:0) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xd0001000) { + // Instruction: 12: 1101IIIIuuuudddd00010000ssssiiii | Rd = memub (Ru + #U4:0) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xd0001100) { + // Instruction: 12: 1101IIIIuuuudddd00010001ssssiiii | Rd = memub (Ru + #U4:0) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memub (%s + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xc0001c00) { + // Instruction: 12: 1100IIIIssssdddd0001110iiiii---- | Rd = memw (Rs + #U4:2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xc0000a00) { + // Instruction: 12: 1100IIIIssssdddd0000101iiiiiittt | Rd = memw (Rs + #U4:2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000fe00) == 0xc0000800) { + // Instruction: 12: 1100IIIIssssdddd0000100iiiiitttt | Rd = memw (Rs + #U4:2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xc0001200) { + // Instruction: 12: 1100IIIIuuuudddd00010010ssssiiii | Rd = memw (Ru + #U4:2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xc0001300) { + // Instruction: 12: 1100IIIIuuuudddd00010011ssssiiii | Rd = memw (Ru + #U4:2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000f800) == 0xc0000000) { + // Instruction: 12: 1100IIIIuuuudddd00000iiisssstttt | Rd = memw (Ru + #U4:2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xc0001000) { + // Instruction: 12: 1100IIIIuuuudddd00010000ssssiiii | Rd = memw (Ru + #U4:2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf000ff00) == 0xc0001100) { + // Instruction: 12: 1100IIIIuuuudddd00010001ssssiiii | Rd = memw (Ru + #U4:2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf000000) >> 24) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (%s + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + break; + } + case 0xd: { + if ((hi_u32 & 0xf800fe00) == 0xd0003c00) { + // Instruction: 13: 11010IIIssssdddd0011110iiiii---- | Rd = memb (Rs + #U3:0) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xd0002a00) { + // Instruction: 13: 11010IIIssssdddd0010101iiiiiittt | Rd = memb (Rs + #U3:0) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xd0002800) { + // Instruction: 13: 11010IIIssssdddd0010100iiiiitttt | Rd = memb (Rs + #U3:0) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xd0003200) { + // Instruction: 13: 11010IIIuuuudddd00110010ssssiiii | Rd = memb (Ru + #U3:0) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xd0003300) { + // Instruction: 13: 11010IIIuuuudddd00110011ssssiiii | Rd = memb (Ru + #U3:0) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0xd0002000) { + // Instruction: 13: 11010IIIuuuudddd00100iiisssstttt | Rd = memb (Ru + #U3:0) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xd0003000) { + // Instruction: 13: 11010IIIuuuudddd00110000ssssiiii | Rd = memb (Ru + #U3:0) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xd0003100) { + // Instruction: 13: 11010IIIuuuudddd00110001ssssiiii | Rd = memb (Ru + #U3:0) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memb (%s + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc0003c00) { + // Instruction: 13: 11000IIIssssdddd0011110iiiii---- | Rd = memh (Rs + #U3:1) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc0002a00) { + // Instruction: 13: 11000IIIssssdddd0010101iiiiiittt | Rd = memh (Rs + #U3:1) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc0002800) { + // Instruction: 13: 11000IIIssssdddd0010100iiiiitttt | Rd = memh (Rs + #U3:1) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc0003200) { + // Instruction: 13: 11000IIIuuuudddd00110010ssssiiii | Rd = memh (Ru + #U3:1) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc0003300) { + // Instruction: 13: 11000IIIuuuudddd00110011ssssiiii | Rd = memh (Ru + #U3:1) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0xc0002000) { + // Instruction: 13: 11000IIIuuuudddd00100iiisssstttt | Rd = memh (Ru + #U3:1) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc0003000) { + // Instruction: 13: 11000IIIuuuudddd00110000ssssiiii | Rd = memh (Ru + #U3:1) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc0003100) { + // Instruction: 13: 11000IIIuuuudddd00110001ssssiiii | Rd = memh (Ru + #U3:1) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memh (%s + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc8003c00) { + // Instruction: 13: 11001IIIssssdddd0011110iiiii---- | Rd = memuh (Rs + #U3:1) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc8002a00) { + // Instruction: 13: 11001IIIssssdddd0010101iiiiiittt | Rd = memuh (Rs + #U3:1) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xc8002800) { + // Instruction: 13: 11001IIIssssdddd0010100iiiiitttt | Rd = memuh (Rs + #U3:1) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc8003200) { + // Instruction: 13: 11001IIIuuuudddd00110010ssssiiii | Rd = memuh (Ru + #U3:1) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc8003300) { + // Instruction: 13: 11001IIIuuuudddd00110011ssssiiii | Rd = memuh (Ru + #U3:1) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0xc8002000) { + // Instruction: 13: 11001IIIuuuudddd00100iiisssstttt | Rd = memuh (Ru + #U3:1) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc8003000) { + // Instruction: 13: 11001IIIuuuudddd00110000ssssiiii | Rd = memuh (Ru + #U3:1) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xc8003100) { + // Instruction: 13: 11001IIIuuuudddd00110001ssssiiii | Rd = memuh (Ru + #U3:1) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memuh (%s + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xdc003c00) { + // Instruction: 13: 1101110IIIIIdddd0011110iiiii---- | Rd = memw (Sp + #U5:2) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xdc003200) { + // Instruction: 13: 1101110IIIIIdddd00110010ssssiiii | Rd = memw (Sp + #U5:2) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xdc003300) { + // Instruction: 13: 1101110IIIIIdddd00110011ssssiiii | Rd = memw (Sp + #U5:2) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xdc002a00) { + // Instruction: 13: 1101110IIIIIdddd0010101iiiiiittt | Rd = memw (Sp + #U5:2) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe00f800) == 0xdc002000) { + // Instruction: 13: 1101110IIIIIdddd00100iiisssstttt | Rd = memw (Sp + #U5:2) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xdc003000) { + // Instruction: 13: 1101110IIIIIdddd00110000ssssiiii | Rd = memw (Sp + #U5:2) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xdc003100) { + // Instruction: 13: 1101110IIIIIdddd00110001ssssiiii | Rd = memw (Sp + #U5:2) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xdc002800) { + // Instruction: 13: 1101110IIIIIdddd0010100iiiiitttt | Rd = memw (Sp + #U5:2) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memw (Sp + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xde003c00) { + // Instruction: 13: 11011110IIIIIddd0011110iiiii---- | Rdd = memd (Sp + #U5:3) ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; allocframe (0x%x)", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xde003200) { + // Instruction: 13: 11011110IIIIIddd00110010ssssiiii | Rdd = memd (Sp + #U5:3) ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memb (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xde003300) { + // Instruction: 13: 11011110IIIIIddd00110011ssssiiii | Rdd = memd (Sp + #U5:3) ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memb (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xde002a00) { + // Instruction: 13: 11011110IIIIIddd0010101iiiiiittt | Rdd = memd (Sp + #U5:3) ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memd (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00f800) == 0xde002000) { + // Instruction: 13: 11011110IIIIIddd00100iiisssstttt | Rdd = memd (Sp + #U5:3) ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memh (%s + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xde003000) { + // Instruction: 13: 11011110IIIIIddd00110000ssssiiii | Rdd = memd (Sp + #U5:3) ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memw (%s + 0x%x) = #0", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xde003100) { + // Instruction: 13: 11011110IIIIIddd00110001ssssiiii | Rdd = memd (Sp + #U5:3) ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memw (%s + 0x%x) = #1", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xde002800) { + // Instruction: 13: 11011110IIIIIddd0010100iiiiitttt | Rdd = memd (Sp + #U5:3) ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf80000) >> 19) << 3; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = memd (Sp + 0x%x) ; memw (Sp + 0x%x) = %s", hex_get_sub_regpair(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xffc4ff00) == 0xdf003200) { + // Instruction: 13: 1101111100---0--00110010ssssiiii | deallocframe ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0_____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xffc4ff00) == 0xdf003300) { + // Instruction: 13: 1101111100---0--00110011ssssiiii | deallocframe ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0_____1; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xffc4fe00) == 0xdf002a00) { + // Instruction: 13: 1101111100---0--0010101iiiiiittt | deallocframe ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMD__SP____S6_3____RTT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memd (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg)); + break; + } + if ((hi_u32 & 0xffc4f800) == 0xdf002000) { + // Instruction: 13: 1101111100---0--00100iiisssstttt | deallocframe ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMH__RS____U3_1____RT; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg)); + break; + } + if ((hi_u32 & 0xffc4ff00) == 0xdf003000) { + // Instruction: 13: 1101111100---0--00110000ssssiiii | deallocframe ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2_____0; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xffc4ff00) == 0xdf003100) { + // Instruction: 13: 1101111100---0--00110001ssssiiii | deallocframe ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2_____1; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xffc4fe00) == 0xdf002800) { + // Instruction: 13: 1101111100---0--0010100iiiiitttt | deallocframe ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__SP____U5_2____RT; + hi->op_count = 2; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe ; memw (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg)); + break; + } + break; + } + case 0xe: { + if ((hi_u32 & 0xff00fe00) == 0xf2001c00) { + // Instruction: 14: 11110010ssssIIII0001110iiiii---- | memb (Rs + #U4:0) = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf2000a00) { + // Instruction: 14: 11110010ssssIIII0000101iiiiiittt | memb (Rs + #U4:0) = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf2000800) { + // Instruction: 14: 11110010ssssIIII0000100iiiiitttt | memb (Rs + #U4:0) = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf3001c00) { + // Instruction: 14: 11110011ssssIIII0001110iiiii---- | memb (Rs + #U4:0) = #1 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf3000a00) { + // Instruction: 14: 11110011ssssIIII0000101iiiiiittt | memb (Rs + #U4:0) = #1 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf3000800) { + // Instruction: 14: 11110011ssssIIII0000100iiiiitttt | memb (Rs + #U4:0) = #1 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf2001200) { + // Instruction: 14: 11110010uuuuIIII00010010ssssiiii | memb (Ru + #U4:0) = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf2001300) { + // Instruction: 14: 11110010uuuuIIII00010011ssssiiii | memb (Ru + #U4:0) = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0xf2000000) { + // Instruction: 14: 11110010uuuuIIII00000iiisssstttt | memb (Ru + #U4:0) = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf2001000) { + // Instruction: 14: 11110010uuuuIIII00010000ssssiiii | memb (Ru + #U4:0) = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf2001100) { + // Instruction: 14: 11110010uuuuIIII00010001ssssiiii | memb (Ru + #U4:0) = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf3001200) { + // Instruction: 14: 11110011uuuuIIII00010010ssssiiii | memb (Ru + #U4:0) = #1 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf3001300) { + // Instruction: 14: 11110011uuuuIIII00010011ssssiiii | memb (Ru + #U4:0) = #1 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0xf3000000) { + // Instruction: 14: 11110011uuuuIIII00000iiisssstttt | memb (Ru + #U4:0) = #1 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf3001000) { + // Instruction: 14: 11110011uuuuIIII00010000ssssiiii | memb (Ru + #U4:0) = #1 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf3001100) { + // Instruction: 14: 11110011uuuuIIII00010001ssssiiii | memb (Ru + #U4:0) = #1 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (%s + 0x%x) = #1 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xea001c00) { + // Instruction: 14: 1110101IIIIIIttt0001110iiiii---- | memd (Sp + #S6:3) = Rtt ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; allocframe (0x%x)", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xea001200) { + // Instruction: 14: 1110101IIIIIIttt00010010ssssiiii | memd (Sp + #S6:3) = Rtt ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memb (%s + 0x%x) = #0", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xea001300) { + // Instruction: 14: 1110101IIIIIIttt00010011ssssiiii | memd (Sp + #S6:3) = Rtt ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memb (%s + 0x%x) = #1", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xea001000) { + // Instruction: 14: 1110101IIIIIIttt00010000ssssiiii | memd (Sp + #S6:3) = Rtt ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memw (%s + 0x%x) = #0", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xea001100) { + // Instruction: 14: 1110101IIIIIIttt00010001ssssiiii | memd (Sp + #S6:3) = Rtt ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memw (%s + 0x%x) = #1", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xea000a00) { + // Instruction: 14: 1110101IIIIIIvvv0000101iiiiiittt | memd (Sp + #S6:3) = Rvv ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memd (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe00f800) == 0xea000000) { + // Instruction: 14: 1110101IIIIIIvvv00000iiisssstttt | memd (Sp + #S6:3) = Rvv ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memh (%s + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xea000800) { + // Instruction: 14: 1110101IIIIIIvvv0000100iiiiitttt | memd (Sp + #S6:3) = Rvv ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f80000) >> 19) << 3; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (Sp + 0x%x) = %s ; memw (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_regpair(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xe0001c00) { + // Instruction: 14: 11100IIIsssstttt0001110iiiii---- | memh (Rs + #U3:1) = Rt ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMH__RS____U3_1____RT___ALLOCFRAME___U5_3_; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xe0000a00) { + // Instruction: 14: 11100IIIssssvvvv0000101iiiiiittt | memh (Rs + #U3:1) = Rv ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMH__RS____U3_1____RV___MEMD__SP____S6_3____RTT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_regpair(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800fe00) == 0xe0000800) { + // Instruction: 14: 11100IIIssssvvvv0000100iiiiitttt | memh (Rs + #U3:1) = Rv ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMH__RS____U3_1____RV___MEMW__SP____U5_2____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xe0001200) { + // Instruction: 14: 11100IIIuuuutttt00010010ssssiiii | memh (Ru + #U3:1) = Rt ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMB__RS____U4_0_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xe0001300) { + // Instruction: 14: 11100IIIuuuutttt00010011ssssiiii | memh (Ru + #U3:1) = Rt ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMB__RS____U4_0_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xe0001000) { + // Instruction: 14: 11100IIIuuuutttt00010000ssssiiii | memh (Ru + #U3:1) = Rt ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMW__RS____U4_2_____0; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800ff00) == 0xe0001100) { + // Instruction: 14: 11100IIIuuuutttt00010001ssssiiii | memh (Ru + #U3:1) = Rt ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMW__RS____U4_2_____1; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf800f800) == 0xe0000000) { + // Instruction: 14: 11100IIIuuuuvvvv00000iiisssstttt | memh (Ru + #U3:1) = Rv ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMH__RU____U3_1____RV___MEMH__RS____U3_1____RT; + hi->op_count = 6; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7000000) >> 24) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[5].type = HEX_OP_TYPE_REG; + hi->ops[5].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (%s + 0x%x) = %s ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hex_get_sub_reg(hi->ops[3].op.reg), hi->ops[4].op.imm, hex_get_sub_reg(hi->ops[5].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf0001c00) { + // Instruction: 14: 11110000ssssIIII0001110iiiii---- | memw (Rs + #U4:2) = #0 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf0000a00) { + // Instruction: 14: 11110000ssssIIII0000101iiiiiittt | memw (Rs + #U4:2) = #0 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf0000800) { + // Instruction: 14: 11110000ssssIIII0000100iiiiitttt | memw (Rs + #U4:2) = #0 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf1001c00) { + // Instruction: 14: 11110001ssssIIII0001110iiiii---- | memw (Rs + #U4:2) = #1 ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; allocframe (0x%x)", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf1000a00) { + // Instruction: 14: 11110001ssssIIII0000101iiiiiittt | memw (Rs + #U4:2) = #1 ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memd (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00fe00) == 0xf1000800) { + // Instruction: 14: 11110001ssssIIII0000100iiiiitttt | memw (Rs + #U4:2) = #1 ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memw (Sp + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf0001200) { + // Instruction: 14: 11110000uuuuIIII00010010ssssiiii | memw (Ru + #U4:2) = #0 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf0001300) { + // Instruction: 14: 11110000uuuuIIII00010011ssssiiii | memw (Ru + #U4:2) = #0 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0xf0000000) { + // Instruction: 14: 11110000uuuuIIII00000iiisssstttt | memw (Ru + #U4:2) = #0 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf0001000) { + // Instruction: 14: 11110000uuuuIIII00010000ssssiiii | memw (Ru + #U4:2) = #0 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf0001100) { + // Instruction: 14: 11110000uuuuIIII00010001ssssiiii | memw (Ru + #U4:2) = #0 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #0 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf1001200) { + // Instruction: 14: 11110001uuuuIIII00010010ssssiiii | memw (Ru + #U4:2) = #1 ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memb (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf1001300) { + // Instruction: 14: 11110001uuuuIIII00010011ssssiiii | memw (Ru + #U4:2) = #1 ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memb (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00f800) == 0xf1000000) { + // Instruction: 14: 11110001uuuuIIII00000iiisssstttt | memw (Ru + #U4:2) = #1 ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memh (%s + 0x%x) = %s", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf1001000) { + // Instruction: 14: 11110001uuuuIIII00010000ssssiiii | memw (Ru + #U4:2) = #1 ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memw (%s + 0x%x) = #0", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xff00ff00) == 0xf1001100) { + // Instruction: 14: 11110001uuuuIIII00010001ssssiiii | memw (Ru + #U4:2) = #1 ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00000) >> 20); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0xf0000) >> 16) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (%s + 0x%x) = #1 ; memw (%s + 0x%x) = #1", hex_get_sub_reg(hi->ops[0].op.reg), hi->ops[1].op.imm, hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xe8001c00) { + // Instruction: 14: 1110100IIIIItttt0001110iiiii---- | memw (Sp + #U5:2) = Rt ; allocframe (#u5:3) + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___ALLOCFRAME___U5_3_; + hi->op_count = 3; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; allocframe (0x%x)", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xe8001200) { + // Instruction: 14: 1110100IIIIItttt00010010ssssiiii | memw (Sp + #U5:2) = Rt ; memb (Rs + #u4:0) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMB__RS____U4_0_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memb (%s + 0x%x) = #0", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xe8001300) { + // Instruction: 14: 1110100IIIIItttt00010011ssssiiii | memw (Sp + #U5:2) = Rt ; memb (Rs + #u4:0) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMB__RS____U4_0_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memb (%s + 0x%x) = #1", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xe8001000) { + // Instruction: 14: 1110100IIIIItttt00010000ssssiiii | memw (Sp + #U5:2) = Rt ; memw (Rs + #u4:2) = #0 + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMW__RS____U4_2_____0; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memw (%s + 0x%x) = #0", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00ff00) == 0xe8001100) { + // Instruction: 14: 1110100IIIIItttt00010001ssssiiii | memw (Sp + #U5:2) = Rt ; memw (Rs + #u4:2) = #1 + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMW__RS____U4_2_____1; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xf) >> 0) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memw (%s + 0x%x) = #1", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xe8000a00) { + // Instruction: 14: 1110100IIIIIvvvv0000101iiiiiittt | memw (Sp + #U5:2) = Rv ; memd (Sp + #s6:3) = Rtt + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMD__SP____S6_3____RTT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f8) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memd (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_regpair(hi->ops[3].op.reg)); + break; + } + if ((hi_u32 & 0xfe00f800) == 0xe8000000) { + // Instruction: 14: 1110100IIIIIvvvv00000iiisssstttt | memw (Sp + #U5:2) = Rv ; memh (Rs + #u3:1) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMH__RS____U3_1____RT; + hi->op_count = 5; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0xf0) >> 4); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x700) >> 8) << 1; // scaled + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memh (%s + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hex_get_sub_reg(hi->ops[2].op.reg), hi->ops[3].op.imm, hex_get_sub_reg(hi->ops[4].op.reg)); + break; + } + if ((hi_u32 & 0xfe00fe00) == 0xe8000800) { + // Instruction: 14: 1110100IIIIIvvvv0000100iiiiitttt | memw (Sp + #U5:2) = Rv ; memw (Sp + #u5:2) = Rt + hi->instruction = HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMW__SP____U5_2____RT; + hi->op_count = 4; + hi->duplex = true; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x1f00000) >> 20) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rv + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f0) >> 4) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0xf) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (Sp + 0x%x) = %s ; memw (Sp + 0x%x) = %s", hi->ops[0].op.imm, hex_get_sub_reg(hi->ops[1].op.reg), hi->ops[2].op.imm, hex_get_sub_reg(hi->ops[3].op.reg)); + break; + } + break; + } + } + } + else { + switch ((hi_u32 >> 28) & 0xF) { + case 0x0: { + // Handle constant extender + hi->instruction = HEX_INS_IMMEXT; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].attr |= HEX_OP_CONST_EXT; + hi->ops[0].op.imm = ((hi_u32 & 0x3FFF) | (((hi_u32 >> 16) & 0xFFF) << 14)) << 6; + constant_extender = hi->ops[0].op.imm; + sprintf(hi->mnem, "immext(#0x%x)", hi->ops[0].op.imm); + break; + } + case 0x1: { + if ((hi_u32 & 0xfc02300) == 0x1800000) { + // Instruction: 1: 0001000110iissssPP0---00iiiiiii- | p0 = cmp.eq (Rs, #-1) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, #-1) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1800100) { + // Instruction: 1: 0001000110iissssPP0---01iiiiiii- | p0 = cmp.gt (Rs, #-1) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, #-1) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1800300) { + // Instruction: 1: 0001000110iissssPP0---11iiiiiii- | p0 = tstbit (Rs, #0) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = tstbit (R%d, #0) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1802000) { + // Instruction: 1: 0001000110iissssPP1---00iiiiiii- | p0 = cmp.eq (Rs, #-1) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, #-1) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1802100) { + // Instruction: 1: 0001000110iissssPP1---01iiiiiii- | p0 = cmp.gt (Rs, #-1) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, #-1) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1802300) { + // Instruction: 1: 0001000110iissssPP1---11iiiiiii- | p0 = tstbit (Rs, #0) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = tstbit (R%d, #0) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c00000) { + // Instruction: 1: 0001000111iissssPP0---00iiiiiii- | p0 = cmp.eq (Rs, #-1) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, #-1) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c00100) { + // Instruction: 1: 0001000111iissssPP0---01iiiiiii- | p0 = cmp.gt (Rs, #-1) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, #-1) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c00300) { + // Instruction: 1: 0001000111iissssPP0---11iiiiiii- | p0 = tstbit (Rs, #0) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = tstbit (R%d, #0) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c02000) { + // Instruction: 1: 0001000111iissssPP1---00iiiiiii- | p0 = cmp.eq (Rs, #-1) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, #-1) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c02100) { + // Instruction: 1: 0001000111iissssPP1---01iiiiiii- | p0 = cmp.gt (Rs, #-1) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, #-1) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x1c02300) { + // Instruction: 1: 0001000111iissssPP1---11iiiiiii- | p0 = tstbit (Rs, #0) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = tstbit (R%d, #0) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x0) { + // Instruction: 1: 0001000000iissssPP0IIIIIiiiiiii- | p0 = cmp.eq (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, 0x%x) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2000) { + // Instruction: 1: 0001000000iissssPP1IIIIIiiiiiii- | p0 = cmp.eq (Rs, #U5) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, 0x%x) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x400000) { + // Instruction: 1: 0001000001iissssPP0IIIIIiiiiiii- | p0 = cmp.eq (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, 0x%x) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x402000) { + // Instruction: 1: 0001000001iissssPP1IIIIIiiiiiii- | p0 = cmp.eq (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, 0x%x) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x800000) { + // Instruction: 1: 0001000010iissssPP0IIIIIiiiiiii- | p0 = cmp.gt (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, 0x%x) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x802000) { + // Instruction: 1: 0001000010iissssPP1IIIIIiiiiiii- | p0 = cmp.gt (Rs, #U5) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, 0x%x) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0xc00000) { + // Instruction: 1: 0001000011iissssPP0IIIIIiiiiiii- | p0 = cmp.gt (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, 0x%x) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0xc02000) { + // Instruction: 1: 0001000011iissssPP1IIIIIiiiiiii- | p0 = cmp.gt (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, 0x%x) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1000000) { + // Instruction: 1: 0001000100iissssPP0IIIIIiiiiiii- | p0 = cmp.gtu (Rs, #U5) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, 0x%x) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1002000) { + // Instruction: 1: 0001000100iissssPP1IIIIIiiiiiii- | p0 = cmp.gtu (Rs, #U5) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, 0x%x) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1400000) { + // Instruction: 1: 0001000101iissssPP0IIIIIiiiiiii- | p0 = cmp.gtu (Rs, #U5) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, 0x%x) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1402000) { + // Instruction: 1: 0001000101iissssPP1IIIIIiiiiiii- | p0 = cmp.gtu (Rs, #U5) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, 0x%x) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3800000) { + // Instruction: 1: 0001001110iissssPP0---00iiiiiii- | p1 = cmp.eq (Rs, #-1) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, #-1) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3800100) { + // Instruction: 1: 0001001110iissssPP0---01iiiiiii- | p1 = cmp.gt (Rs, #-1) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, #-1) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3800300) { + // Instruction: 1: 0001001110iissssPP0---11iiiiiii- | p1 = tstbit (Rs, #0) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = tstbit (R%d, #0) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3802000) { + // Instruction: 1: 0001001110iissssPP1---00iiiiiii- | p1 = cmp.eq (Rs, #-1) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, #-1) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3802100) { + // Instruction: 1: 0001001110iissssPP1---01iiiiiii- | p1 = cmp.gt (Rs, #-1) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, #-1) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3802300) { + // Instruction: 1: 0001001110iissssPP1---11iiiiiii- | p1 = tstbit (Rs, #0) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = tstbit (R%d, #0) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c00000) { + // Instruction: 1: 0001001111iissssPP0---00iiiiiii- | p1 = cmp.eq (Rs, #-1) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, #-1) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c00100) { + // Instruction: 1: 0001001111iissssPP0---01iiiiiii- | p1 = cmp.gt (Rs, #-1) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, #-1) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c00300) { + // Instruction: 1: 0001001111iissssPP0---11iiiiiii- | p1 = tstbit (Rs, #0) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = tstbit (R%d, #0) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c02000) { + // Instruction: 1: 0001001111iissssPP1---00iiiiiii- | p1 = cmp.eq (Rs, #-1) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, #-1) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c02100) { + // Instruction: 1: 0001001111iissssPP1---01iiiiiii- | p1 = cmp.gt (Rs, #-1) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, #-1) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02300) == 0x3c02300) { + // Instruction: 1: 0001001111iissssPP1---11iiiiiii- | p1 = tstbit (Rs, #0) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = tstbit (R%d, #0) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2000000) { + // Instruction: 1: 0001001000iissssPP0IIIIIiiiiiii- | p1 = cmp.eq (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, 0x%x) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2002000) { + // Instruction: 1: 0001001000iissssPP1IIIIIiiiiiii- | p1 = cmp.eq (Rs, #U5) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, 0x%x) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2400000) { + // Instruction: 1: 0001001001iissssPP0IIIIIiiiiiii- | p1 = cmp.eq (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, 0x%x) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2402000) { + // Instruction: 1: 0001001001iissssPP1IIIIIiiiiiii- | p1 = cmp.eq (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, 0x%x) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2800000) { + // Instruction: 1: 0001001010iissssPP0IIIIIiiiiiii- | p1 = cmp.gt (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, 0x%x) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2802000) { + // Instruction: 1: 0001001010iissssPP1IIIIIiiiiiii- | p1 = cmp.gt (Rs, #U5) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, 0x%x) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2c00000) { + // Instruction: 1: 0001001011iissssPP0IIIIIiiiiiii- | p1 = cmp.gt (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, 0x%x) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2c02000) { + // Instruction: 1: 0001001011iissssPP1IIIIIiiiiiii- | p1 = cmp.gt (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, 0x%x) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x3000000) { + // Instruction: 1: 0001001100iissssPP0IIIIIiiiiiii- | p1 = cmp.gtu (Rs, #U5) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, 0x%x) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x3002000) { + // Instruction: 1: 0001001100iissssPP1IIIIIiiiiiii- | p1 = cmp.gtu (Rs, #U5) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, 0x%x) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x3400000) { + // Instruction: 1: 0001001101iissssPP0IIIIIiiiiiii- | p1 = cmp.gtu (Rs, #U5) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, 0x%x) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x3402000) { + // Instruction: 1: 0001001101iissssPP1IIIIIiiiiiii- | p1 = cmp.gtu (Rs, #U5) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, 0x%x) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4000000) { + // Instruction: 1: 0001010000iissssPP00ttttiiiiiii- | p0 = cmp.eq (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, R%d) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4001000) { + // Instruction: 1: 0001010000iissssPP01ttttiiiiiii- | p1 = cmp.eq (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, R%d) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4002000) { + // Instruction: 1: 0001010000iissssPP10ttttiiiiiii- | p0 = cmp.eq (Rs, Rt) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, R%d) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4003000) { + // Instruction: 1: 0001010000iissssPP11ttttiiiiiii- | p1 = cmp.eq (Rs, Rt) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, R%d) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4400000) { + // Instruction: 1: 0001010001iissssPP00ttttiiiiiii- | p0 = cmp.eq (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, R%d) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4401000) { + // Instruction: 1: 0001010001iissssPP01ttttiiiiiii- | p1 = cmp.eq (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, R%d) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4402000) { + // Instruction: 1: 0001010001iissssPP10ttttiiiiiii- | p0 = cmp.eq (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.eq (R%d, R%d) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4403000) { + // Instruction: 1: 0001010001iissssPP11ttttiiiiiii- | p1 = cmp.eq (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.eq (R%d, R%d) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4800000) { + // Instruction: 1: 0001010010iissssPP00ttttiiiiiii- | p0 = cmp.gt (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, R%d) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4801000) { + // Instruction: 1: 0001010010iissssPP01ttttiiiiiii- | p1 = cmp.gt (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, R%d) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4802000) { + // Instruction: 1: 0001010010iissssPP10ttttiiiiiii- | p0 = cmp.gt (Rs, Rt) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, R%d) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4803000) { + // Instruction: 1: 0001010010iissssPP11ttttiiiiiii- | p1 = cmp.gt (Rs, Rt) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, R%d) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4c00000) { + // Instruction: 1: 0001010011iissssPP00ttttiiiiiii- | p0 = cmp.gt (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, R%d) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4c01000) { + // Instruction: 1: 0001010011iissssPP01ttttiiiiiii- | p1 = cmp.gt (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, R%d) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4c02000) { + // Instruction: 1: 0001010011iissssPP10ttttiiiiiii- | p0 = cmp.gt (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gt (R%d, R%d) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x4c03000) { + // Instruction: 1: 0001010011iissssPP11ttttiiiiiii- | p1 = cmp.gt (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gt (R%d, R%d) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5000000) { + // Instruction: 1: 0001010100iissssPP00ttttiiiiiii- | p0 = cmp.gtu (Rs, Rt) ; if (p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, R%d) ; if (p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5001000) { + // Instruction: 1: 0001010100iissssPP01ttttiiiiiii- | p1 = cmp.gtu (Rs, Rt) ; if (p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, R%d) ; if (p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5002000) { + // Instruction: 1: 0001010100iissssPP10ttttiiiiiii- | p0 = cmp.gtu (Rs, Rt) ; if (p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, R%d) ; if (p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5003000) { + // Instruction: 1: 0001010100iissssPP11ttttiiiiiii- | p1 = cmp.gtu (Rs, Rt) ; if (p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, R%d) ; if (p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5400000) { + // Instruction: 1: 0001010101iissssPP00ttttiiiiiii- | p0 = cmp.gtu (Rs, Rt) ; if (!p0.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, R%d) ; if (!p0.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5401000) { + // Instruction: 1: 0001010101iissssPP01ttttiiiiiii- | p1 = cmp.gtu (Rs, Rt) ; if (!p1.new) jump:nt #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, R%d) ; if (!p1.new) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5402000) { + // Instruction: 1: 0001010101iissssPP10ttttiiiiiii- | p0 = cmp.gtu (Rs, Rt) ; if (!p0.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p0 = cmp.gtu (R%d, R%d) ; if (!p0.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc03000) == 0x5403000) { + // Instruction: 1: 0001010101iissssPP11ttttiiiiiii- | p1 = cmp.gtu (Rs, Rt) ; if (!p1.new) jump:t #r9:2 + hi->instruction = HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p1 = cmp.gtu (R%d, R%d) ; if (!p1.new) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x6000000) { + // Instruction: 1: 00010110--iiddddPPIIIIIIiiiiiii- | Rd = #U6 ; jump #r9:2 + hi->instruction = HEX_INS_MULT_RD____U6___JUMP__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = 0x%x ; jump 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x7000000) { + // Instruction: 1: 00010111--iissssPP--ddddiiiiiii- | Rd = Rs ; jump #r9:2 + hi->instruction = HEX_INS_MULT_RD___RS___JUMP__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0xf00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0xf0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = R%d ; jump 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + break; + } + case 0x2: { + if ((hi_u32 & 0xfc02000) == 0x0) { + // Instruction: 2: 0010000000ii-sssPP0tttttiiiiiii- | if (cmp.eq (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.eq (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2000) { + // Instruction: 2: 0010000000ii-sssPP1tttttiiiiiii- | if (cmp.eq (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.eq (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x400000) { + // Instruction: 2: 0010000001ii-sssPP0tttttiiiiiii- | if (!cmp.eq (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.eq (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x402000) { + // Instruction: 2: 0010000001ii-sssPP1tttttiiiiiii- | if (!cmp.eq (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.eq (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x800000) { + // Instruction: 2: 0010000010ii-sssPP0tttttiiiiiii- | if (cmp.gt (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x802000) { + // Instruction: 2: 0010000010ii-sssPP1tttttiiiiiii- | if (cmp.gt (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0xc00000) { + // Instruction: 2: 0010000011ii-sssPP0tttttiiiiiii- | if (!cmp.gt (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0xc02000) { + // Instruction: 2: 0010000011ii-sssPP1tttttiiiiiii- | if (!cmp.gt (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1000000) { + // Instruction: 2: 0010000100ii-sssPP0tttttiiiiiii- | if (cmp.gtu (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1002000) { + // Instruction: 2: 0010000100ii-sssPP1tttttiiiiiii- | if (cmp.gtu (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1400000) { + // Instruction: 2: 0010000101ii-sssPP0tttttiiiiiii- | if (!cmp.gtu (Ns.new, Rt)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1402000) { + // Instruction: 2: 0010000101ii-sssPP1tttttiiiiiii- | if (!cmp.gtu (Ns.new, Rt)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1800000) { + // Instruction: 2: 0010000110ii-sssPP0tttttiiiiiii- | if (cmp.gt (Rt, Ns.new)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1802000) { + // Instruction: 2: 0010000110ii-sssPP1tttttiiiiiii- | if (cmp.gt (Rt, Ns.new)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1c00000) { + // Instruction: 2: 0010000111ii-sssPP0tttttiiiiiii- | if (!cmp.gt (Rt, Ns.new)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x1c02000) { + // Instruction: 2: 0010000111ii-sssPP1tttttiiiiiii- | if (!cmp.gt (Rt, Ns.new)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2000000) { + // Instruction: 2: 0010001000ii-sssPP0tttttiiiiiii- | if (cmp.gtu (Rt, Ns.new)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2002000) { + // Instruction: 2: 0010001000ii-sssPP1tttttiiiiiii- | if (cmp.gtu (Rt, Ns.new)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2400000) { + // Instruction: 2: 0010001001ii-sssPP0tttttiiiiiii- | if (!cmp.gtu (Rt, Ns.new)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, R%d)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x2402000) { + // Instruction: 2: 0010001001ii-sssPP1tttttiiiiiii- | if (!cmp.gtu (Rt, Ns.new)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, R%d)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4000000) { + // Instruction: 2: 0010010000ii-sssPP0IIIIIiiiiiii- | if (cmp.eq (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (cmp.eq (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4002000) { + // Instruction: 2: 0010010000ii-sssPP1IIIIIiiiiiii- | if (cmp.eq (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (cmp.eq (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4400000) { + // Instruction: 2: 0010010001ii-sssPP0IIIIIiiiiiii- | if (!cmp.eq (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (!cmp.eq (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4402000) { + // Instruction: 2: 0010010001ii-sssPP1IIIIIiiiiiii- | if (!cmp.eq (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (!cmp.eq (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4800000) { + // Instruction: 2: 0010010010ii-sssPP0IIIIIiiiiiii- | if (cmp.gt (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (cmp.gt (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4802000) { + // Instruction: 2: 0010010010ii-sssPP1IIIIIiiiiiii- | if (cmp.gt (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (cmp.gt (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4c00000) { + // Instruction: 2: 0010010011ii-sssPP0IIIIIiiiiiii- | if (!cmp.gt (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (!cmp.gt (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x4c02000) { + // Instruction: 2: 0010010011ii-sssPP1IIIIIiiiiiii- | if (!cmp.gt (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (!cmp.gt (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5000000) { + // Instruction: 2: 0010010100ii-sssPP0IIIIIiiiiiii- | if (cmp.gtu (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5002000) { + // Instruction: 2: 0010010100ii-sssPP1IIIIIiiiiiii- | if (cmp.gtu (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gtu (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5400000) { + // Instruction: 2: 0010010101ii-sssPP0IIIIIiiiiiii- | if (!cmp.gtu (Ns.new, #U5)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, 0x%x)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5402000) { + // Instruction: 2: 0010010101ii-sssPP1IIIIIiiiiiii- | if (!cmp.gtu (Ns.new, #U5)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_T__R9_2; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gtu (R%d, 0x%x)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5800000) { + // Instruction: 2: 0010010110ii-sssPP0-----iiiiiii- | if (tstbit (Ns.new, #0)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (tstbit (R%d, #0)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5802000) { + // Instruction: 2: 0010010110ii-sssPP1-----iiiiiii- | if (tstbit (Ns.new, #0)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (tstbit (R%d, #0)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5c00000) { + // Instruction: 2: 0010010111ii-sssPP0-----iiiiiii- | if (!tstbit (Ns.new, #0)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!tstbit (R%d, #0)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x5c02000) { + // Instruction: 2: 0010010111ii-sssPP1-----iiiiiii- | if (!tstbit (Ns.new, #0)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!tstbit (R%d, #0)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6000000) { + // Instruction: 2: 0010011000ii-sssPP0-----iiiiiii- | if (cmp.eq (Ns.new, #-1)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.eq (R%d, #-1)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6002000) { + // Instruction: 2: 0010011000ii-sssPP1-----iiiiiii- | if (cmp.eq (Ns.new, #-1)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.eq (R%d, #-1)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6400000) { + // Instruction: 2: 0010011001ii-sssPP0-----iiiiiii- | if (!cmp.eq (Ns.new, #-1)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.eq (R%d, #-1)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6402000) { + // Instruction: 2: 0010011001ii-sssPP1-----iiiiiii- | if (!cmp.eq (Ns.new, #-1)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.eq (R%d, #-1)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6800000) { + // Instruction: 2: 0010011010ii-sssPP0-----iiiiiii- | if (cmp.gt (Ns.new, #-1)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, #-1)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6802000) { + // Instruction: 2: 0010011010ii-sssPP1-----iiiiiii- | if (cmp.gt (Ns.new, #-1)) jump:t #r9:2 + hi->instruction = HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (cmp.gt (R%d, #-1)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6c00000) { + // Instruction: 2: 0010011011ii-sssPP0-----iiiiiii- | if (!cmp.gt (Ns.new, #-1)) jump:nt #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_NT__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, #-1)) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc02000) == 0x6c02000) { + // Instruction: 2: 0010011011ii-sssPP1-----iiiiiii- | if (!cmp.gt (Ns.new, #-1)) jump:t #r9:2 + hi->instruction = HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_T__R9_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x70000) >> 16); // Ns.new + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x300000) >> 20) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (!cmp.gt (R%d, #-1)) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + break; + } + case 0x3: { + if ((hi_u32 & 0xfe00000) == 0xac00000) { + // Instruction: 3: 00111010110sssssPPittttti--ddddd | Rdd = memd (Rs + Rt << #u2) + hi->instruction = HEX_INS_RDD___MEMD__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d + R%d << 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xc00000) { + // Instruction: 3: 00110000110sssssPPitttttivvddddd | if (Pv) Rdd = memd (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RDD___MEMD__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d:R%d = memd (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1c00000) { + // Instruction: 3: 00110001110sssssPPitttttivvddddd | if !Pv Rdd = memd (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RDD___MEMD__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d:R%d = memd (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2c00000) { + // Instruction: 3: 00110010110sssssPPitttttivvddddd | if (Pv.new) Rdd = memd (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RDD___MEMD__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d:R%d = memd (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3c00000) { + // Instruction: 3: 00110011110sssssPPitttttivvddddd | if !Pv.new Rdd = memd (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RDD___MEMD__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d:R%d = memd (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa000000) { + // Instruction: 3: 00111010000sssssPPittttti--ddddd | Rd = memb (Rs + Rt << #u2) + hi->instruction = HEX_INS_RD___MEMB__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d + R%d << 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x0) { + // Instruction: 3: 00110000000sssssPPitttttivvddddd | if (Pv) Rd = memb (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RD___MEMB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d = memb (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1000000) { + // Instruction: 3: 00110001000sssssPPitttttivvddddd | if !Pv Rd = memb (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RD___MEMB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d = memb (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2000000) { + // Instruction: 3: 00110010000sssssPPitttttivvddddd | if (Pv.new) Rd = memb (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RD___MEMB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memb (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3000000) { + // Instruction: 3: 00110011000sssssPPitttttivvddddd | if !Pv.new Rd = memb (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RD___MEMB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d = memb (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa400000) { + // Instruction: 3: 00111010010sssssPPittttti--ddddd | Rd = memh (Rs + Rt << #u2) + hi->instruction = HEX_INS_RD___MEMH__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d + R%d << 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x400000) { + // Instruction: 3: 00110000010sssssPPitttttivvddddd | if (Pv) Rd = memh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RD___MEMH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d = memh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1400000) { + // Instruction: 3: 00110001010sssssPPitttttivvddddd | if !Pv Rd = memh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RD___MEMH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d = memh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2400000) { + // Instruction: 3: 00110010010sssssPPitttttivvddddd | if (Pv.new) Rd = memh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RD___MEMH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3400000) { + // Instruction: 3: 00110011010sssssPPitttttivvddddd | if !Pv.new Rd = memh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RD___MEMH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d = memh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa200000) { + // Instruction: 3: 00111010001sssssPPittttti--ddddd | Rd = memub (Rs + Rt << #u2) + hi->instruction = HEX_INS_RD___MEMUB__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d + R%d << 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x200000) { + // Instruction: 3: 00110000001sssssPPitttttivvddddd | if (Pv) Rd = memub (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RD___MEMUB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d = memub (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1200000) { + // Instruction: 3: 00110001001sssssPPitttttivvddddd | if !Pv Rd = memub (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RD___MEMUB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d = memub (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2200000) { + // Instruction: 3: 00110010001sssssPPitttttivvddddd | if (Pv.new) Rd = memub (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RD___MEMUB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memub (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3200000) { + // Instruction: 3: 00110011001sssssPPitttttivvddddd | if !Pv.new Rd = memub (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RD___MEMUB__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d = memub (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa600000) { + // Instruction: 3: 00111010011sssssPPittttti--ddddd | Rd = memuh (Rs + Rt << #u2) + hi->instruction = HEX_INS_RD___MEMUH__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d + R%d << 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x600000) { + // Instruction: 3: 00110000011sssssPPitttttivvddddd | if (Pv) Rd = memuh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RD___MEMUH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d = memuh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1600000) { + // Instruction: 3: 00110001011sssssPPitttttivvddddd | if !Pv Rd = memuh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RD___MEMUH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d = memuh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2600000) { + // Instruction: 3: 00110010011sssssPPitttttivvddddd | if (Pv.new) Rd = memuh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RD___MEMUH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memuh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3600000) { + // Instruction: 3: 00110011011sssssPPitttttivvddddd | if !Pv.new Rd = memuh (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RD___MEMUH__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d = memuh (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa800000) { + // Instruction: 3: 00111010100sssssPPittttti--ddddd | Rd = memw (Rs + Rt << #u2) + hi->instruction = HEX_INS_RD___MEMW__RS___RT_____U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d + R%d << 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x800000) { + // Instruction: 3: 00110000100sssssPPitttttivvddddd | if (Pv) Rd = memw (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV__RD___MEMW__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) R%d = memw (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1800000) { + // Instruction: 3: 00110001100sssssPPitttttivvddddd | if !Pv Rd = memw (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_RD___MEMW__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d R%d = memw (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2800000) { + // Instruction: 3: 00110010100sssssPPitttttivvddddd | if (Pv.new) Rd = memw (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__PV_NEW__RD___MEMW__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memw (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3800000) { + // Instruction: 3: 00110011100sssssPPitttttivvddddd | if !Pv.new Rd = memw (Rs + Rt << #u2) + hi->instruction = HEX_INS_IF__NOT_PV_NEW_RD___MEMW__RS___RT_____U2_; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[4].type = HEX_OP_TYPE_IMM; + hi->ops[4].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new R%d = memw (R%d + R%d << 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg, hi->ops[4].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xe000000) { + // Instruction: 3: 00111110-00sssssPP0iiiiii00ttttt | memb (Rs + #u6:0) += Rt + hi->instruction = HEX_INS_MEMB__RS____U6_0___PLUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) += R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe000020) { + // Instruction: 3: 00111110-00sssssPP0iiiiii01ttttt | memb (Rs + #u6:0) -= Rt + hi->instruction = HEX_INS_MEMB__RS____U6_0___MINUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) -= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe000040) { + // Instruction: 3: 00111110-00sssssPP0iiiiii10ttttt | memb (Rs + #u6:0) &= Rt + hi->instruction = HEX_INS_MEMB__RS____U6_0___AND_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) &= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe000060) { + // Instruction: 3: 00111110-00sssssPP0iiiiii11ttttt | memb (Rs + #u6:0) |= Rt + hi->instruction = HEX_INS_MEMB__RS____U6_0___OR_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) |= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xf000000) { + // Instruction: 3: 00111111-00sssssPP0iiiiii00IIIII | memb (Rs + #u6:0) += #U5 + hi->instruction = HEX_INS_MEMB__RS____U6_0___PLUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) += 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf000020) { + // Instruction: 3: 00111111-00sssssPP0iiiiii01IIIII | memb (Rs + #u6:0) -= #U5 + hi->instruction = HEX_INS_MEMB__RS____U6_0___MINUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) -= 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf000040) { + // Instruction: 3: 00111111-00sssssPP0iiiiii10IIIII | memb (Rs + #u6:0) = clrbit (#U5) + hi->instruction = HEX_INS_MEMB__RS____U6_0____CLRBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) = clrbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf000060) { + // Instruction: 3: 00111111-00sssssPP0iiiiii11IIIII | memb (Rs + #u6:0) = setbit (#U5) + hi->instruction = HEX_INS_MEMB__RS____U6_0____SETBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) = setbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xe200000) { + // Instruction: 3: 00111110-01sssssPP0iiiiii00ttttt | memh (Rs + #u6:1) += Rt + hi->instruction = HEX_INS_MEMH__RS____U6_1___PLUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) += R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe200020) { + // Instruction: 3: 00111110-01sssssPP0iiiiii01ttttt | memh (Rs + #u6:1) -= Rt + hi->instruction = HEX_INS_MEMH__RS____U6_1___MINUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) -= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe200040) { + // Instruction: 3: 00111110-01sssssPP0iiiiii10ttttt | memh (Rs + #u6:1) &= Rt + hi->instruction = HEX_INS_MEMH__RS____U6_1___AND_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) &= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe200060) { + // Instruction: 3: 00111110-01sssssPP0iiiiii11ttttt | memh (Rs + #u6:1) |= Rt + hi->instruction = HEX_INS_MEMH__RS____U6_1___OR_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) |= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xf200000) { + // Instruction: 3: 00111111-01sssssPP0iiiiii00IIIII | memh (Rs + #u6:1) += #U5 + hi->instruction = HEX_INS_MEMH__RS____U6_1___PLUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) += 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf200020) { + // Instruction: 3: 00111111-01sssssPP0iiiiii01IIIII | memh (Rs + #u6:1) -= #U5 + hi->instruction = HEX_INS_MEMH__RS____U6_1___MINUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) -= 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf200040) { + // Instruction: 3: 00111111-01sssssPP0iiiiii10IIIII | memh (Rs + #u6:1) = clrbit (#U5) + hi->instruction = HEX_INS_MEMH__RS____U6_1____CLRBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) = clrbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf200060) { + // Instruction: 3: 00111111-01sssssPP0iiiiii11IIIII | memh (Rs + #u6:1) = setbit (#U5) + hi->instruction = HEX_INS_MEMH__RS____U6_1____SETBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) = setbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xe400000) { + // Instruction: 3: 00111110-10sssssPP0iiiiii00ttttt | memw (Rs + #u6:2) += Rt + hi->instruction = HEX_INS_MEMW__RS____U6_2___PLUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) += R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe400020) { + // Instruction: 3: 00111110-10sssssPP0iiiiii01ttttt | memw (Rs + #u6:2) -= Rt + hi->instruction = HEX_INS_MEMW__RS____U6_2___MINUS_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) -= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe400040) { + // Instruction: 3: 00111110-10sssssPP0iiiiii10ttttt | memw (Rs + #u6:2) &= Rt + hi->instruction = HEX_INS_MEMW__RS____U6_2___AND_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) &= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xe400060) { + // Instruction: 3: 00111110-10sssssPP0iiiiii11ttttt | memw (Rs + #u6:2) |= Rt + hi->instruction = HEX_INS_MEMW__RS____U6_2___OR_EQ__RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) |= R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf602060) == 0xf400000) { + // Instruction: 3: 00111111-10sssssPP0iiiiii00IIIII | memw (Rs + #u6:2) += #U5 + hi->instruction = HEX_INS_MEMW__RS____U6_2___PLUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) += 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf400020) { + // Instruction: 3: 00111111-10sssssPP0iiiiii01IIIII | memw (Rs + #u6:2) -= #U5 + hi->instruction = HEX_INS_MEMW__RS____U6_2___MINUS_EQ___U5; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) -= 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf400040) { + // Instruction: 3: 00111111-10sssssPP0iiiiii10IIIII | memw (Rs + #u6:2) = clrbit (#U5) + hi->instruction = HEX_INS_MEMW__RS____U6_2____CLRBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) = clrbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602060) == 0xf400060) { + // Instruction: 3: 00111111-10sssssPP0iiiiii11IIIII | memw (Rs + #u6:2) = setbit (#U5) + hi->instruction = HEX_INS_MEMW__RS____U6_2____SETBIT___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) = setbit (0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00018) == 0xba00000) { + // Instruction: 3: 00111011101sssssPPiuuuuui--00ttt | memb (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_MEMB__RS___RU_____U2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x4a00000) { + // Instruction: 3: 00110100101sssssPPiuuuuuivv00ttt | if (Pv) memb (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMB__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x5a00000) { + // Instruction: 3: 00110101101sssssPPiuuuuuivv00ttt | if !Pv memb (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x6a00000) { + // Instruction: 3: 00110110101sssssPPiuuuuuivv00ttt | if (Pv.new) memb (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x7a00000) { + // Instruction: 3: 00110111101sssssPPiuuuuuivv00ttt | if !Pv.new memb (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0xba00008) { + // Instruction: 3: 00111011101sssssPPiuuuuui--01ttt | memh (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_MEMH__RS___RU_____U2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x4a00008) { + // Instruction: 3: 00110100101sssssPPiuuuuuivv01ttt | if (Pv) memh (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMH__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x5a00008) { + // Instruction: 3: 00110101101sssssPPiuuuuuivv01ttt | if !Pv memh (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x6a00008) { + // Instruction: 3: 00110110101sssssPPiuuuuuivv01ttt | if (Pv.new) memh (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x7a00008) { + // Instruction: 3: 00110111101sssssPPiuuuuuivv01ttt | if !Pv.new memh (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0xba00010) { + // Instruction: 3: 00111011101sssssPPiuuuuui--10ttt | memw (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_MEMW__RS___RU_____U2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x4a00010) { + // Instruction: 3: 00110100101sssssPPiuuuuuivv10ttt | if (Pv) memw (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMW__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x5a00010) { + // Instruction: 3: 00110101101sssssPPiuuuuuivv10ttt | if !Pv memw (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x6a00010) { + // Instruction: 3: 00110110101sssssPPiuuuuuivv10ttt | if (Pv.new) memw (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0x7a00010) { + // Instruction: 3: 00110111101sssssPPiuuuuuivv10ttt | if !Pv.new memw (Rs + Ru << #u2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RS___RU_____U2____NT_NEW; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x7) >> 0); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xbc00000) { + // Instruction: 3: 00111011110sssssPPiuuuuui--ttttt | memd (Rs + Ru << #u2) = Rtt + hi->instruction = HEX_INS_MEMD__RS___RU_____U2____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d + R%d << 0x%x) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4c00000) { + // Instruction: 3: 00110100110sssssPPiuuuuuivvttttt | if (Pv) memd (Rs + Ru << #u2) = Rtt + hi->instruction = HEX_INS_IF__PV__MEMD__RS___RU_____U2____RTT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memd (R%d + R%d << 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg + 1, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5c00000) { + // Instruction: 3: 00110101110sssssPPiuuuuuivvttttt | if !Pv memd (Rs + Ru << #u2) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_MEMD__RS___RU_____U2____RTT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memd (R%d + R%d << 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg + 1, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6c00000) { + // Instruction: 3: 00110110110sssssPPiuuuuuivvttttt | if (Pv.new) memd (Rs + Ru << #u2) = Rtt + hi->instruction = HEX_INS_IF__PV_NEW__MEMD__RS___RU_____U2____RTT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memd (R%d + R%d << 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg + 1, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7c00000) { + // Instruction: 3: 00110111110sssssPPiuuuuuivvttttt | if !Pv.new memd (Rs + Ru << #u2) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMD__RS___RU_____U2____RTT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].attr |= HEX_OP_REG_PAIR; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memd (R%d + R%d << 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg + 1, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xb000000) { + // Instruction: 3: 00111011000sssssPPiuuuuui--ttttt | memb (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_MEMB__RS___RU_____U2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xe600000) == 0xc000000) { + // Instruction: 3: 0011110--00sssssPPIiiiiiiIIIIIII | memb (Rs + #u6:0) = #S8 + hi->instruction = HEX_INS_MEMB__RS____U6_0_____S8; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x7f) >> 0)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d + 0x%x) = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4000000) { + // Instruction: 3: 00110100000sssssPPiuuuuuivvttttt | if (Pv) memb (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV__MEMB__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5000000) { + // Instruction: 3: 00110101000sssssPPiuuuuuivvttttt | if !Pv memb (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6000000) { + // Instruction: 3: 00110110000sssssPPiuuuuuivvttttt | if (Pv.new) memb (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7000000) { + // Instruction: 3: 00110111000sssssPPiuuuuuivvttttt | if !Pv.new memb (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8000000) { + // Instruction: 3: 00111000000sssssPPIiiiiiivvIIIII | if (Pv) memb (Rs + #u6:0) = #S6 + hi->instruction = HEX_INS_IF__PV__MEMB__RS____U6_0_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8800000) { + // Instruction: 3: 00111000100sssssPPIiiiiiivvIIIII | if !Pv memb (Rs + #u6:0) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RS____U6_0_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9000000) { + // Instruction: 3: 00111001000sssssPPIiiiiiivvIIIII | if (Pv.new) memb (Rs + #u6:0) = #S6 + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RS____U6_0_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9800000) { + // Instruction: 3: 00111001100sssssPPIiiiiiivvIIIII | if !Pv.new memb (Rs + #u6:0) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xb400000) { + // Instruction: 3: 00111011010sssssPPiuuuuui--ttttt | memh (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_MEMH__RS___RU_____U2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xb600000) { + // Instruction: 3: 00111011011sssssPPiuuuuui--ttttt | memh (Rs + Ru << #u2) = Rt.H + hi->instruction = HEX_INS_MEMH__RS___RU_____U2____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + R%d << 0x%x) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xe600000) == 0xc200000) { + // Instruction: 3: 0011110--01sssssPPIiiiiiiIIIIIII | memh (Rs + #u6:1) = #S8 + hi->instruction = HEX_INS_MEMH__RS____U6_1_____S8; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x7f) >> 0)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4400000) { + // Instruction: 3: 00110100010sssssPPiuuuuuivvttttt | if (Pv) memh (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV__MEMH__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4600000) { + // Instruction: 3: 00110100011sssssPPiuuuuuivvttttt | if (Pv) memh (Rs + Ru << #u2) = Rt.H + hi->instruction = HEX_INS_IF__PV__MEMH__RS___RU_____U2____RT_H; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + R%d << 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5400000) { + // Instruction: 3: 00110101010sssssPPiuuuuuivvttttt | if !Pv memh (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5600000) { + // Instruction: 3: 00110101011sssssPPiuuuuuivvttttt | if !Pv memh (Rs + Ru << #u2) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____RT_H; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + R%d << 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6400000) { + // Instruction: 3: 00110110010sssssPPiuuuuuivvttttt | if (Pv.new) memh (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6600000) { + // Instruction: 3: 00110110011sssssPPiuuuuuivvttttt | if (Pv.new) memh (Rs + Ru << #u2) = Rt.H + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____RT_H; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + R%d << 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7400000) { + // Instruction: 3: 00110111010sssssPPiuuuuuivvttttt | if !Pv.new memh (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7600000) { + // Instruction: 3: 00110111011sssssPPiuuuuuivvttttt | if !Pv.new memh (Rs + Ru << #u2) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____RT_H; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + R%d << 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8200000) { + // Instruction: 3: 00111000001sssssPPIiiiiiivvIIIII | if (Pv) memh (Rs + #u6:1) = #S6 + hi->instruction = HEX_INS_IF__PV__MEMH__RS____U6_1_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8a00000) { + // Instruction: 3: 00111000101sssssPPIiiiiiivvIIIII | if !Pv memh (Rs + #u6:1) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS____U6_1_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9200000) { + // Instruction: 3: 00111001001sssssPPIiiiiiivvIIIII | if (Pv.new) memh (Rs + #u6:1) = #S6 + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS____U6_1_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9a00000) { + // Instruction: 3: 00111001101sssssPPIiiiiiivvIIIII | if !Pv.new memh (Rs + #u6:1) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xb800000) { + // Instruction: 3: 00111011100sssssPPiuuuuui--ttttt | memw (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_MEMW__RS___RU_____U2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xe600000) == 0xc400000) { + // Instruction: 3: 0011110--10sssssPPIiiiiiiIIIIIII | memw (Rs + #u6:2) = #S8 + hi->instruction = HEX_INS_MEMW__RS____U6_2_____S8; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x7f) >> 0)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d + 0x%x) = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4800000) { + // Instruction: 3: 00110100100sssssPPiuuuuuivvttttt | if (Pv) memw (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV__MEMW__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5800000) { + // Instruction: 3: 00110101100sssssPPiuuuuuivvttttt | if !Pv memw (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6800000) { + // Instruction: 3: 00110110100sssssPPiuuuuuivvttttt | if (Pv.new) memw (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7800000) { + // Instruction: 3: 00110111100sssssPPiuuuuuivvttttt | if !Pv.new memw (Rs + Ru << #u2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RS___RU_____U2____RT; + hi->op_count = 5; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[4].type = HEX_OP_TYPE_REG; + hi->ops[4].op.reg = (((hi_u32) & 0x1f) >> 0); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d + R%d << 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm, hi->ops[4].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8400000) { + // Instruction: 3: 00111000010sssssPPIiiiiiivvIIIII | if (Pv) memw (Rs + #u6:2) = #S6 + hi->instruction = HEX_INS_IF__PV__MEMW__RS____U6_2_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8c00000) { + // Instruction: 3: 00111000110sssssPPIiiiiiivvIIIII | if !Pv memw (Rs + #u6:2) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RS____U6_2_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9400000) { + // Instruction: 3: 00111001010sssssPPIiiiiiivvIIIII | if (Pv.new) memw (Rs + #u6:2) = #S6 + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RS____U6_2_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9c00000) { + // Instruction: 3: 00111001110sssssPPIiiiiiivvIIIII | if !Pv.new memw (Rs + #u6:2) = #S6 + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2_____S6; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f80) >> 7) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x1f) >> 0)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d + 0x%x) = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + break; + } + case 0x4: { + if ((hi_u32 & 0x9e00000) == 0x9c00000) { + // Instruction: 4: 01001ii1110iiiiiPPiiiiiiiiiddddd | Rdd = memd (gp + #u16:3) + hi->instruction = HEX_INS_RDD___MEMD__GP____U16_3_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (gp + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1c00000) { + // Instruction: 4: 01000001110sssssPP0ttiiiiiiddddd | if (Pt) Rdd = memd (Rs + #u6:3) + hi->instruction = HEX_INS_IF__PT__RDD___MEMD__RS____U6_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 3; // scaled + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend_off(&hi->ops[3], 3); + sprintf(hi->mnem, "if (P%d) R%d:R%d = memd (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3c00000) { + // Instruction: 4: 01000011110sssssPP0ttiiiiiiddddd | if (Pt.new) Rdd = memd (Rs + #u6:3) + hi->instruction = HEX_INS_IF__PT_NEW__RDD___MEMD__RS____U6_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 3; // scaled + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend_off(&hi->ops[3], 3); + sprintf(hi->mnem, "if (P%d.new) R%d:R%d = memd (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5c00000) { + // Instruction: 4: 01000101110sssssPP0ttiiiiiiddddd | if !Pt Rdd = memd (Rs + #u6:3) + hi->instruction = HEX_INS_IF__NOT_PT_RDD___MEMD__RS____U6_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 3; // scaled + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend_off(&hi->ops[3], 3); + sprintf(hi->mnem, "if !P%d R%d:R%d = memd (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7c00000) { + // Instruction: 4: 01000111110sssssPP0ttiiiiiiddddd | if !Pt.new Rdd = memd (Rs + #u6:3) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RDD___MEMD__RS____U6_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 3; // scaled + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend_off(&hi->ops[3], 3); + sprintf(hi->mnem, "if !P%d.new R%d:R%d = memd (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x9000000) { + // Instruction: 4: 01001ii1000iiiiiPPiiiiiiiiiddddd | Rd = memb (gp + #u16:0) + hi->instruction = HEX_INS_RD___MEMB__GP____U16_0_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (gp + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1000000) { + // Instruction: 4: 01000001000sssssPP0ttiiiiiiddddd | if (Pt) Rd = memb (Rs + #u6:0) + hi->instruction = HEX_INS_IF__PT__RD___MEMB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d) R%d = memb (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3000000) { + // Instruction: 4: 01000011000sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memb (Rs + #u6:0) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d.new) R%d = memb (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5000000) { + // Instruction: 4: 01000101000sssssPP0ttiiiiiiddddd | if !Pt Rd = memb (Rs + #u6:0) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d R%d = memb (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7000000) { + // Instruction: 4: 01000111000sssssPP0ttiiiiiiddddd | if !Pt.new Rd = memb (Rs + #u6:0) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d.new R%d = memb (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x9400000) { + // Instruction: 4: 01001ii1010iiiiiPPiiiiiiiiiddddd | Rd = memh (gp + #u16:1) + hi->instruction = HEX_INS_RD___MEMH__GP____U16_1_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (gp + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1400000) { + // Instruction: 4: 01000001010sssssPP0ttiiiiiiddddd | if (Pt) Rd = memh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__PT__RD___MEMH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if (P%d) R%d = memh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3400000) { + // Instruction: 4: 01000011010sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if (P%d.new) R%d = memh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5400000) { + // Instruction: 4: 01000101010sssssPP0ttiiiiiiddddd | if !Pt Rd = memh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if !P%d R%d = memh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7400000) { + // Instruction: 4: 01000111010sssssPP0ttiiiiiiddddd | if !Pt.new Rd = memh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if !P%d.new R%d = memh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x9200000) { + // Instruction: 4: 01001ii1001iiiiiPPiiiiiiiiiddddd | Rd = memub (gp + #u16:0) + hi->instruction = HEX_INS_RD___MEMUB__GP____U16_0_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (gp + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1200000) { + // Instruction: 4: 01000001001sssssPP0ttiiiiiiddddd | if (Pt) Rd = memub (Rs + #u6:0) + hi->instruction = HEX_INS_IF__PT__RD___MEMUB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d) R%d = memub (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3200000) { + // Instruction: 4: 01000011001sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memub (Rs + #u6:0) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d.new) R%d = memub (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5200000) { + // Instruction: 4: 01000101001sssssPP0ttiiiiiiddddd | if !Pt Rd = memub (Rs + #u6:0) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d R%d = memub (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7200000) { + // Instruction: 4: 01000111001sssssPP0ttiiiiiiddddd | if !Pt.new Rd = memub (Rs + #u6:0) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUB__RS____U6_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d.new R%d = memub (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x9600000) { + // Instruction: 4: 01001ii1011iiiiiPPiiiiiiiiiddddd | Rd = memuh (gp + #u16:1) + hi->instruction = HEX_INS_RD___MEMUH__GP____U16_1_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (gp + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1600000) { + // Instruction: 4: 01000001011sssssPP0ttiiiiiiddddd | if (Pt) Rd = memuh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__PT__RD___MEMUH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if (P%d) R%d = memuh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3600000) { + // Instruction: 4: 01000011011sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memuh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if (P%d.new) R%d = memuh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5600000) { + // Instruction: 4: 01000101011sssssPP0ttiiiiiiddddd | if !Pt Rd = memuh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if !P%d R%d = memuh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7600000) { + // Instruction: 4: 01000111011sssssPP0ttiiiiiiddddd | if !Pt.new Rd = memuh (Rs + #u6:1) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUH__RS____U6_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 1; // scaled + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend_off(&hi->ops[3], 1); + sprintf(hi->mnem, "if !P%d.new R%d = memuh (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x9800000) { + // Instruction: 4: 01001ii1100iiiiiPPiiiiiiiiiddddd | Rd = memw (gp + #u16:2) + hi->instruction = HEX_INS_RD___MEMW__GP____U16_2_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)) << 2; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (gp + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x1800000) { + // Instruction: 4: 01000001100sssssPP0ttiiiiiiddddd | if (Pt) Rd = memw (Rs + #u6:2) + hi->instruction = HEX_INS_IF__PT__RD___MEMW__RS____U6_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 2; // scaled + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend_off(&hi->ops[3], 2); + sprintf(hi->mnem, "if (P%d) R%d = memw (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x3800000) { + // Instruction: 4: 01000011100sssssPP0ttiiiiiiddddd | if (Pt.new) Rd = memw (Rs + #u6:2) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMW__RS____U6_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 2; // scaled + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend_off(&hi->ops[3], 2); + sprintf(hi->mnem, "if (P%d.new) R%d = memw (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5800000) { + // Instruction: 4: 01000101100sssssPP0ttiiiiiiddddd | if !Pt Rd = memw (Rs + #u6:2) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMW__RS____U6_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 2; // scaled + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend_off(&hi->ops[3], 2); + sprintf(hi->mnem, "if !P%d R%d = memw (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x7800000) { + // Instruction: 4: 01000111100sssssPP0ttiiiiiiddddd | if !Pt.new Rd = memw (Rs + #u6:2) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMW__RS____U6_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x1800) >> 11); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x7e0) >> 5) << 2; // scaled + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend_off(&hi->ops[3], 2); + sprintf(hi->mnem, "if !P%d.new R%d = memw (R%d + 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0x9e01800) == 0x8a00000) { + // Instruction: 4: 01001ii0101iiiiiPPi00tttiiiiiiii | memb (gp + #u16:0) = Nt.new + hi->instruction = HEX_INS_MEMB__GP____U16_0____NT_NEW; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[0]); + sprintf(hi->mnem, "memb (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0xa00000) { + // Instruction: 4: 01000000101sssssPPi00tttiiiii0vv | if (Pv) memb (Rs + #u6:0) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMB__RS____U6_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x2a00000) { + // Instruction: 4: 01000010101sssssPPi00tttiiiii0vv | if (Pv.new) memb (Rs + #u6:0) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RS____U6_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x4a00000) { + // Instruction: 4: 01000100101sssssPPi00tttiiiii0vv | if !Pv memb (Rs + #u6:0) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RS____U6_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x6a00000) { + // Instruction: 4: 01000110101sssssPPi00tttiiiii0vv | if !Pv.new memb (Rs + #u6:0) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e01800) == 0x8a00800) { + // Instruction: 4: 01001ii0101iiiiiPPi01tttiiiiiiii | memh (gp + #u16:1) = Nt.new + hi->instruction = HEX_INS_MEMH__GP____U16_1____NT_NEW; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0xa00800) { + // Instruction: 4: 01000000101sssssPPi01tttiiiii0vv | if (Pv) memh (Rs + #u6:1) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMH__RS____U6_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x2a00800) { + // Instruction: 4: 01000010101sssssPPi01tttiiiii0vv | if (Pv.new) memh (Rs + #u6:1) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x4a00800) { + // Instruction: 4: 01000100101sssssPPi01tttiiiii0vv | if !Pv memh (Rs + #u6:1) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x6a00800) { + // Instruction: 4: 01000110101sssssPPi01tttiiiii0vv | if !Pv.new memh (Rs + #u6:1) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e01800) == 0x8a01000) { + // Instruction: 4: 01001ii0101iiiiiPPi10tttiiiiiiii | memw (gp + #u16:2) = Nt.new + hi->instruction = HEX_INS_MEMW__GP____U16_2____NT_NEW; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0xa01000) { + // Instruction: 4: 01000000101sssssPPi10tttiiiii0vv | if (Pv) memw (Rs + #u6:2) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMW__RS____U6_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x2a01000) { + // Instruction: 4: 01000010101sssssPPi10tttiiiii0vv | if (Pv.new) memw (Rs + #u6:2) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RS____U6_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x4a01000) { + // Instruction: 4: 01000100101sssssPPi10tttiiiii0vv | if !Pv memw (Rs + #u6:2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RS____U6_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01804) == 0x6a01000) { + // Instruction: 4: 01000110101sssssPPi10tttiiiii0vv | if !Pv.new memw (Rs + #u6:2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x8c00000) { + // Instruction: 4: 01001ii0110iiiiiPPitttttiiiiiiii | memd (gp + #u16:3) = Rtt + hi->instruction = HEX_INS_MEMD__GP____U16_3____RTT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 3; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (gp + 0x%x) = R%d:R%d", hi->ops[0].op.imm, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0xc00000) { + // Instruction: 4: 01000000110sssssPPitttttiiiii0vv | if (Pv) memd (Rs + #u6:3) = Rtt + hi->instruction = HEX_INS_IF__PV__MEMD__RS____U6_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 3; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + hex_op_extend_off(&hi->ops[2], 3); + sprintf(hi->mnem, "if (P%d) memd (R%d + 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x2c00000) { + // Instruction: 4: 01000010110sssssPPitttttiiiii0vv | if (Pv.new) memd (Rs + #u6:3) = Rtt + hi->instruction = HEX_INS_IF__PV_NEW__MEMD__RS____U6_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 3; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + hex_op_extend_off(&hi->ops[2], 3); + sprintf(hi->mnem, "if (P%d.new) memd (R%d + 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x4c00000) { + // Instruction: 4: 01000100110sssssPPitttttiiiii0vv | if !Pv memd (Rs + #u6:3) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_MEMD__RS____U6_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 3; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE; // if !Pv + hex_op_extend_off(&hi->ops[2], 3); + sprintf(hi->mnem, "if !P%d memd (R%d + 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x6c00000) { + // Instruction: 4: 01000110110sssssPPitttttiiiii0vv | if !Pv.new memd (Rs + #u6:3) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMD__RS____U6_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 3; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + hex_op_extend_off(&hi->ops[2], 3); + sprintf(hi->mnem, "if !P%d.new memd (R%d + 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x8000000) { + // Instruction: 4: 01001ii0000iiiiiPPitttttiiiiiiii | memb (gp + #u16:0) = Rt + hi->instruction = HEX_INS_MEMB__GP____U16_0____RT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[0]); + sprintf(hi->mnem, "memb (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x0) { + // Instruction: 4: 01000000000sssssPPitttttiiiii0vv | if (Pv) memb (Rs + #u6:0) = Rt + hi->instruction = HEX_INS_IF__PV__MEMB__RS____U6_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x2000000) { + // Instruction: 4: 01000010000sssssPPitttttiiiii0vv | if (Pv.new) memb (Rs + #u6:0) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RS____U6_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x4000000) { + // Instruction: 4: 01000100000sssssPPitttttiiiii0vv | if !Pv memb (Rs + #u6:0) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RS____U6_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x6000000) { + // Instruction: 4: 01000110000sssssPPitttttiiiii0vv | if !Pv.new memb (Rs + #u6:0) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new memb (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x8400000) { + // Instruction: 4: 01001ii0010iiiiiPPitttttiiiiiiii | memh (gp + #u16:1) = Rt + hi->instruction = HEX_INS_MEMH__GP____U16_1____RT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x8600000) { + // Instruction: 4: 01001ii0011iiiiiPPitttttiiiiiiii | memh (gp + #u16:1) = Rt.H + hi->instruction = HEX_INS_MEMH__GP____U16_1____RT_H; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (gp + 0x%x) = R%d.H", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x400000) { + // Instruction: 4: 01000000010sssssPPitttttiiiii0vv | if (Pv) memh (Rs + #u6:1) = Rt + hi->instruction = HEX_INS_IF__PV__MEMH__RS____U6_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "if (P%d) memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x600000) { + // Instruction: 4: 01000000011sssssPPitttttiiiii0vv | if (Pv) memh (Rs + #u6:1) = Rt.H + hi->instruction = HEX_INS_IF__PV__MEMH__RS____U6_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d + 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x2400000) { + // Instruction: 4: 01000010010sssssPPitttttiiiii0vv | if (Pv.new) memh (Rs + #u6:1) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "if (P%d.new) memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x2600000) { + // Instruction: 4: 01000010011sssssPPitttttiiiii0vv | if (Pv.new) memh (Rs + #u6:1) = Rt.H + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d + 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x4400000) { + // Instruction: 4: 01000100010sssssPPitttttiiiii0vv | if !Pv memh (Rs + #u6:1) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "if !P%d memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x4600000) { + // Instruction: 4: 01000100011sssssPPitttttiiiii0vv | if !Pv memh (Rs + #u6:1) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d + 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x6400000) { + // Instruction: 4: 01000110010sssssPPitttttiiiii0vv | if !Pv.new memh (Rs + #u6:1) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "if !P%d.new memh (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x6600000) { + // Instruction: 4: 01000110011sssssPPitttttiiiii0vv | if !Pv.new memh (Rs + #u6:1) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 1; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d + 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x8800000) { + // Instruction: 4: 01001ii0100iiiiiPPitttttiiiiiiii | memw (gp + #u16:2) = Rt + hi->instruction = HEX_INS_MEMW__GP____U16_2____RT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 2; // scaled + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (gp + 0x%x) = R%d", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x800000) { + // Instruction: 4: 01000000100sssssPPitttttiiiii0vv | if (Pv) memw (Rs + #u6:2) = Rt + hi->instruction = HEX_INS_IF__PV__MEMW__RS____U6_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (P%d) memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x2800000) { + // Instruction: 4: 01000010100sssssPPitttttiiiii0vv | if (Pv.new) memw (Rs + #u6:2) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RS____U6_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if (P%d.new) memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x4800000) { + // Instruction: 4: 01000100100sssssPPitttttiiiii0vv | if !Pv memw (Rs + #u6:2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RS____U6_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if !P%d memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00004) == 0x6800000) { + // Instruction: 4: 01000110100sssssPPitttttiiiii0vv | if !Pv.new memw (Rs + #u6:2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xf8) >> 3)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "if !P%d.new memw (R%d + 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + break; + } + case 0x5: { + if ((hi_u32 & 0xfe00000) == 0xa00000) { + // Instruction: 5: 01010000101sssssPP-------------- | callr Rs + hi->instruction = HEX_INS_CALLR_RS; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "callr R%d", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1000000) { + // Instruction: 5: 01010001000sssssPP----uu-------- | if (Pu) callr Rs + hi->instruction = HEX_INS_IF__PU__CALLR_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) callr R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1200000) { + // Instruction: 5: 01010001001sssssPP----uu-------- | if !Pu callr Rs + hi->instruction = HEX_INS_IF__NOT_PU_CALLR_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d callr R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2a00000) { + // Instruction: 5: 01010010101sssssPP-------------- | hintjr (Rs) + hi->instruction = HEX_INS_HINTJR__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "hintjr (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2800000) { + // Instruction: 5: 01010010100sssssPP-------------- | jumpr Rs + hi->instruction = HEX_INS_JUMPR_RS; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "jumpr R%d", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3400000) { + // Instruction: 5: 01010011010sssssPP-00-uu-------- | if (Pu) jumpr:nt Rs + hi->instruction = HEX_INS_IF__PU__JUMPR_NT_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) jumpr:nt R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3400800) { + // Instruction: 5: 01010011010sssssPP-01-uu-------- | if (Pu.new) jumpr:nt Rs + hi->instruction = HEX_INS_IF__PU_NEW__JUMPR_NT_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) jumpr:nt R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3401000) { + // Instruction: 5: 01010011010sssssPP-10-uu-------- | if (Pu) jumpr:t Rs + hi->instruction = HEX_INS_IF__PU__JUMPR_T_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) jumpr:t R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3401800) { + // Instruction: 5: 01010011010sssssPP-11-uu-------- | if (Pu.new) jumpr:t Rs + hi->instruction = HEX_INS_IF__PU_NEW__JUMPR_T_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) jumpr:t R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3600000) { + // Instruction: 5: 01010011011sssssPP-00-uu-------- | if !Pu jumpr:nt Rs + hi->instruction = HEX_INS_IF__NOT_PU_JUMPR_NT_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d jumpr:nt R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3600800) { + // Instruction: 5: 01010011011sssssPP-01-uu-------- | if !Pu.new jumpr:nt Rs + hi->instruction = HEX_INS_IF__NOT_PU_NEW_JUMPR_NT_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new jumpr:nt R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3601000) { + // Instruction: 5: 01010011011sssssPP-10-uu-------- | if !Pu jumpr:t Rs + hi->instruction = HEX_INS_IF__NOT_PU_JUMPR_T_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d jumpr:t R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe01800) == 0x3601800) { + // Instruction: 5: 01010011011sssssPP-11-uu-------- | if !Pu.new jumpr:t Rs + hi->instruction = HEX_INS_IF__NOT_PU_NEW_JUMPR_T_RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new jumpr:t R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xe000001) == 0xa000000) { + // Instruction: 5: 0101101iiiiiiiiiPPiiiiiiiiiiiii0 | call #r22:2 + hi->instruction = HEX_INS_CALL__R22_2; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1ff0000) >> 16) | ((hi_u32 & 0x3ffe) >> 1)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[0], 2); + sprintf(hi->mnem, "call 0x%x", hi->ops[0].op.imm); + break; + } + if ((hi_u32 & 0xf200800) == 0xd000000) { + // Instruction: 5: 01011101ii0iiiiiPPi-0-uuiiiiiii- | if (Pu) call #r15:2 + hi->instruction = HEX_INS_IF__PU__CALL__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_TRUE; // if (Pu) + hex_op_extend_off(&hi->ops[1], 2); + sprintf(hi->mnem, "if (P%d) call 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf200800) == 0xd200000) { + // Instruction: 5: 01011101ii1iiiiiPPi-0-uuiiiiiii- | if !Pu call #r15:2 + hi->instruction = HEX_INS_IF__NOT_PU_CALL__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_FALSE; // if !Pu + hex_op_extend_off(&hi->ops[1], 2); + sprintf(hi->mnem, "if !P%d call 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xe000000) == 0x8000000) { + // Instruction: 5: 0101100iiiiiiiiiPPiiiiiiiiiiiii- | jump #r22:2 + hi->instruction = HEX_INS_JUMP__R22_2; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1ff0000) >> 16) | ((hi_u32 & 0x3ffe) >> 1)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[0], 2); + sprintf(hi->mnem, "jump 0x%x", hi->ops[0].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc000000) { + // Instruction: 5: 01011100ii0iiiiiPPi00-uuiiiiiii- | if (Pu) jump:nt #r15:2 + hi->instruction = HEX_INS_IF__PU__JUMP_NT__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) jump:nt 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc001000) { + // Instruction: 5: 01011100ii0iiiiiPPi10-uuiiiiiii- | if (Pu) jump:t #r15:2 + hi->instruction = HEX_INS_IF__PU__JUMP_T__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) jump:t 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc200000) { + // Instruction: 5: 01011100ii1iiiiiPPi00-uuiiiiiii- | if !Pu jump:nt #r15:2 + hi->instruction = HEX_INS_IF__NOT_PU_JUMP_NT__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d jump:nt 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc201000) { + // Instruction: 5: 01011100ii1iiiiiPPi10-uuiiiiiii- | if !Pu jump:t #r15:2 + hi->instruction = HEX_INS_IF__NOT_PU_JUMP_T__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d jump:t 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc000800) { + // Instruction: 5: 01011100ii0iiiiiPPi01-uuiiiiiii- | if (Pu.new) jump:nt #r15:2 + hi->instruction = HEX_INS_IF__PU_NEW__JUMP_NT__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) jump:nt 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc001800) { + // Instruction: 5: 01011100ii0iiiiiPPi11-uuiiiiiii- | if (Pu.new) jump:t #r15:2 + hi->instruction = HEX_INS_IF__PU_NEW__JUMP_T__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) jump:t 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc200800) { + // Instruction: 5: 01011100ii1iiiiiPPi01-uuiiiiiii- | if !Pu.new jump:nt #r15:2 + hi->instruction = HEX_INS_IF__NOT_PU_NEW_JUMP_NT__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new jump:nt 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf201800) == 0xc201800) { + // Instruction: 5: 01011100ii1iiiiiPPi11-uuiiiiiii- | if !Pu.new jump:t #r15:2 + hi->instruction = HEX_INS_IF__NOT_PU_NEW_JUMP_T__R15_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xfe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new jump:t 0x%x", hi->ops[0].op.pred, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5a00000) { + // Instruction: 5: 01010101101sssssPP---------ddddd | Rd = icdatar (Rs) + hi->instruction = HEX_INS_RD___ICDATAR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = icdatar (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5e00000) { + // Instruction: 5: 01010101111sssssPP---------ddddd | Rd = ictagr (Rs) + hi->instruction = HEX_INS_RD___ICTAGR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ictagr (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0x6c00800) { + // Instruction: 5: 01010110110sssssPP001----------- | icinvidx (Rs) + hi->instruction = HEX_INS_ICINVIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "icinvidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5c00000) { + // Instruction: 5: 01010101110sssssPP-ttttt-------- | ictagw (Rs, Rt) + hi->instruction = HEX_INS_ICTAGW__RS__RT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "ictagw (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0x6c01000) { + // Instruction: 5: 01010110110-----PP010----------- | ickill + hi->instruction = HEX_INS_ICKILL; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "ickill"); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x7e00000) { + // Instruction: 5: 01010111111-----PP00----000----- | rte + hi->instruction = HEX_INS_RTE; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "rte"); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x7e01000) { + // Instruction: 5: 01010111111-----PP01----000----- | rteunlock + hi->instruction = HEX_INS_RTEUNLOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "rteunlock"); + break; + } + if ((hi_u32 & 0xfe03800) == 0x6c00000) { + // Instruction: 5: 01010110110sssssPP000----------- | icinva (Rs) + hi->instruction = HEX_INS_ICINVA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "icinva (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfff23ff) == 0x7c00002) { + // Instruction: 5: 0101011111000000PP0---0000000010 | isync + hi->instruction = HEX_INS_ISYNC; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "isync"); + break; + } + if ((hi_u32 & 0xfc00000) == 0x4400000) { + // Instruction: 5: 0101010001------PP-iiiii---iii-- | pause (#u8) + hi->instruction = HEX_INS_PAUSE___U8_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x1c) >> 2)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "pause (0x%x)", hi->ops[0].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x4000000) { + // Instruction: 5: 0101010000------PP-iiiii---iii-- | trap0 (#u8) + hi->instruction = HEX_INS_TRAP0___U8_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x1c) >> 2)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "trap0 (0x%x)", hi->ops[0].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x4800000) { + // Instruction: 5: 0101010010------PP-iiiii---iii-- | trap1 (#u8) + hi->instruction = HEX_INS_TRAP1___U8_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x1c) >> 2)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "trap1 (0x%x)", hi->ops[0].op.imm); + break; + } + break; + } + case 0x6: { + if ((hi_u32 & 0xff02090) == 0xb002090) { + // Instruction: 6: 011010110000--ssPP1---tt1--1--dd | Pd = fastcorner9 (Ps, Pt) + hi->instruction = HEX_INS_PD___FASTCORNER9__PS__PT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = fastcorner9 (P%d, P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02090) == 0xb102090) { + // Instruction: 6: 011010110001--ssPP1---tt1--1--dd | Pd = !fastcorner9 (Ps, Pt) + hi->instruction = HEX_INS_PD____NOT_FASTCORNER9__PS__PT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !fastcorner9 (P%d, P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb800000) { + // Instruction: 6: 011010111000--ssPP0-----------dd | Pd = any8 (Ps) + hi->instruction = HEX_INS_PD___ANY8__PS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = any8 (P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xba00000) { + // Instruction: 6: 011010111010--ssPP0-----------dd | Pd = all8 (Ps) + hi->instruction = HEX_INS_PD___ALL8__PS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = all8 (P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred); + break; + } + if ((hi_u32 & 0xfe00000) == 0x0) { + // Instruction: 6: 01100000000sssssPP-iiiii---ii--- | loop0 (#r7:2, Rs) + hi->instruction = HEX_INS_LOOP0___R7_2__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[0], 2); + sprintf(hi->mnem, "loop0 (0x%x, R%d)", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x200000) { + // Instruction: 6: 01100000001sssssPP-iiiii---ii--- | loop1 (#r7:2, Rs) + hi->instruction = HEX_INS_LOOP1___R7_2__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[0], 2); + sprintf(hi->mnem, "loop1 (0x%x, R%d)", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9000000) { + // Instruction: 6: 01101001000IIIIIPP-iiiiiIIIii-II | loop0 (#r7:2, #U10) + hi->instruction = HEX_INS_LOOP0___R7_2___U10_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x3) >> 0)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "loop0 (0x%x, 0x%x)", hi->ops[0].op.imm, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9200000) { + // Instruction: 6: 01101001001IIIIIPP-iiiiiIIIii-II | loop1 (#r7:2, #U10) + hi->instruction = HEX_INS_LOOP1___R7_2___U10_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x3) >> 0)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "loop1 (0x%x, 0x%x)", hi->ops[0].op.imm, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfff0000) == 0xa490000) { + // Instruction: 6: 0110101001001001PP-iiiiii--ddddd | Rd = add (pc, #u6) + hi->instruction = HEX_INS_RD___ADD__PC___U6_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1f80) >> 7); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = add (pc, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa00000) { + // Instruction: 6: 01100000101sssssPP-iiiii---ii--- | p3 = sp1loop0 (#r7:2, Rs) + hi->instruction = HEX_INS_P3___SP1LOOP0___R7_2__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp1loop0 (0x%x, R%d)", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xc00000) { + // Instruction: 6: 01100000110sssssPP-iiiii---ii--- | p3 = sp2loop0 (#r7:2, Rs) + hi->instruction = HEX_INS_P3___SP2LOOP0___R7_2__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp2loop0 (0x%x, R%d)", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xe00000) { + // Instruction: 6: 01100000111sssssPP-iiiii---ii--- | p3 = sp3loop0 (#r7:2, Rs) + hi->instruction = HEX_INS_P3___SP3LOOP0___R7_2__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp3loop0 (0x%x, R%d)", hi->ops[0].op.imm, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9a00000) { + // Instruction: 6: 01101001101IIIIIPP-iiiiiIIIii-II | p3 = sp1loop0 (#r7:2, #U10) + hi->instruction = HEX_INS_P3___SP1LOOP0___R7_2___U10_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x3) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp1loop0 (0x%x, 0x%x)", hi->ops[0].op.imm, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9c00000) { + // Instruction: 6: 01101001110IIIIIPP-iiiiiIIIii-II | p3 = sp2loop0 (#r7:2, #U10) + hi->instruction = HEX_INS_P3___SP2LOOP0___R7_2___U10_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x3) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp2loop0 (0x%x, 0x%x)", hi->ops[0].op.imm, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x9e00000) { + // Instruction: 6: 01101001111IIIIIPP-iiiiiIIIii-II | p3 = sp3loop0 (#r7:2, #U10) + hi->instruction = HEX_INS_P3___SP3LOOP0___R7_2___U10_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32 & 0x1f00) >> 8) | ((hi_u32 & 0x18) >> 3)) << 2; // scaled + if (hi->ops[0].op.imm & (1 << 0)) { + hi->ops[0].op.imm |= (0xFFFFFFFF << 0); + } + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x3) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "p3 = sp3loop0 (0x%x, 0x%x)", hi->ops[0].op.imm, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xff02000) == 0xb000000) { + // Instruction: 6: 011010110000--ssPP0---tt------dd | Pd = and (Pt, Ps) + hi->instruction = HEX_INS_PD___AND__PT__PS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb100000) { + // Instruction: 6: 011010110001--ssPP0---ttuu----dd | Pd = and (Ps, and (Pt, Pu)) + hi->instruction = HEX_INS_PD___AND__PS__AND__PT__PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, and (P%d, P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb200000) { + // Instruction: 6: 011010110010--ssPP0---tt------dd | Pd = or (Pt, Ps) + hi->instruction = HEX_INS_PD___OR__PT__PS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb300000) { + // Instruction: 6: 011010110011--ssPP0---ttuu----dd | Pd = and (Ps, or (Pt, Pu)) + hi->instruction = HEX_INS_PD___AND__PS__OR__PT__PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, or (P%d, P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb400000) { + // Instruction: 6: 011010110100--ssPP0---tt------dd | Pd = xor (Ps, Pt) + hi->instruction = HEX_INS_PD___XOR__PS__PT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = xor (P%d, P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb500000) { + // Instruction: 6: 011010110101--ssPP0---ttuu----dd | Pd = or (Ps, and (Pt, Pu)) + hi->instruction = HEX_INS_PD___OR__PS__AND__PT__PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, and (P%d, P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb600000) { + // Instruction: 6: 011010110110--ssPP0---tt------dd | Pd = and (Pt, !Ps) + hi->instruction = HEX_INS_PD___AND__PT___NOT_PS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, !P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb700000) { + // Instruction: 6: 011010110111--ssPP0---ttuu----dd | Pd = or (Ps, or (Pt, Pu)) + hi->instruction = HEX_INS_PD___OR__PS__OR__PT__PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, or (P%d, P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xb900000) { + // Instruction: 6: 011010111001--ssPP0---ttuu----dd | Pd = and (Ps, and (Pt, !Pu)) + hi->instruction = HEX_INS_PD___AND__PS__AND__PT___NOT_PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, and (P%d, !P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xbb00000) { + // Instruction: 6: 011010111011--ssPP0---ttuu----dd | Pd = and (Ps, or (Pt, !Pu)) + hi->instruction = HEX_INS_PD___AND__PS__OR__PT___NOT_PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = and (P%d, or (P%d, !P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xbc00000) { + // Instruction: 6: 011010111100--ssPP0-----------dd | Pd = not (Ps) + hi->instruction = HEX_INS_PD___NOT__PS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = not (P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xbd00000) { + // Instruction: 6: 011010111101--ssPP0---ttuu----dd | Pd = or (Ps, and (Pt, !Pu)) + hi->instruction = HEX_INS_PD___OR__PS__AND__PT___NOT_PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, and (P%d, !P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xbe00000) { + // Instruction: 6: 011010111110--ssPP0---tt------dd | Pd = or (Pt, !Ps) + hi->instruction = HEX_INS_PD___OR__PT___NOT_PS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, !P%d)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xff02000) == 0xbf00000) { + // Instruction: 6: 011010111111--ssPP0---ttuu----dd | Pd = or (Ps, or (Pt, !Pu)) + hi->instruction = HEX_INS_PD___OR__PS__OR__PT___NOT_PU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0xc0) >> 6); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = or (P%d, or (P%d, !P%d))", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.pred, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2200000) { + // Instruction: 6: 01100010001sssssPP---------ddddd | Cd = Rs + hi->instruction = HEX_INS_CD___RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_CONTROL; + hi->ops[0].op.cr = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = R%d", hex_get_cntl_reg(hi->ops[0].op.cr), hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3200000) { + // Instruction: 6: 01100011001sssssPP---------ddddd | Cdd = Rss + hi->instruction = HEX_INS_CDD___RSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_CONTROL; + hi->ops[0].op.cr = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%sd = R%d:R%d", hex_get_cntl_reg(hi->ops[0].op.cr), hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8000000) { + // Instruction: 6: 01101000000sssssPP---------ddddd | Rdd = Css + hi->instruction = HEX_INS_RDD___CSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_CONTROL; + hi->ops[1].op.cr = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = %ss", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hex_get_cntl_reg(hi->ops[1].op.cr)); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa000000) { + // Instruction: 6: 01101010000sssssPP---------ddddd | Rd = Cs + hi->instruction = HEX_INS_RD___CS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_CONTROL; + hi->ops[1].op.cr = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = %s", hi->ops[0].op.reg, hex_get_cntl_reg(hi->ops[1].op.cr)); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1000000) { + // Instruction: 6: 0110000100isssssPPi0iiiiiiiiiii- | if (Rs != #0) jump:nt #r13:2 + hi->instruction = HEX_INS_IF__RS__NOT____0__JUMP_NT__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d != #0) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1001000) { + // Instruction: 6: 0110000100isssssPPi1iiiiiiiiiii- | if (Rs != #0) jump:t #r13:2 + hi->instruction = HEX_INS_IF__RS__NOT____0__JUMP_T__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d != #0) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1400000) { + // Instruction: 6: 0110000101isssssPPi0iiiiiiiiiii- | if (Rs> = #0) jump:nt #r13:2 + hi->instruction = HEX_INS_IF__RS_GT_EQ___0__JUMP_NT__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d> = #0) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1401000) { + // Instruction: 6: 0110000101isssssPPi1iiiiiiiiiii- | if (Rs> = #0) jump:t #r13:2 + hi->instruction = HEX_INS_IF__RS_GT_EQ___0__JUMP_T__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d> = #0) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1800000) { + // Instruction: 6: 0110000110isssssPPi0iiiiiiiiiii- | if (Rs == #0) jump:nt #r13:2 + hi->instruction = HEX_INS_IF__RS__EQ___0__JUMP_NT__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d == #0) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1801000) { + // Instruction: 6: 0110000110isssssPPi1iiiiiiiiiii- | if (Rs == #0) jump:t #r13:2 + hi->instruction = HEX_INS_IF__RS__EQ___0__JUMP_T__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d == #0) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1c00000) { + // Instruction: 6: 0110000111isssssPPi0iiiiiiiiiii- | if (Rs< = #0) jump:nt #r13:2 + hi->instruction = HEX_INS_IF__RS_LT_EQ___0__JUMP_NT__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d< = #0) jump:nt 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc01000) == 0x1c01000) { + // Instruction: 6: 0110000111isssssPPi1iiiiiiiiiii- | if (Rs< = #0) jump:t #r13:2 + hi->instruction = HEX_INS_IF__RS_LT_EQ___0__JUMP_T__R13_2; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xffe) >> 1)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (R%d< = #0) jump:t 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2000000) { + // Instruction: 6: 01100010000sssssPP---------ddddd | Gd = Rs + hi->instruction = HEX_INS_GD___RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Gd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3000000) { + // Instruction: 6: 01100011000sssssPP---------ddddd | Gdd = Rss + hi->instruction = HEX_INS_GDD___RSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Gd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%dd = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8200000) { + // Instruction: 6: 01101000001sssssPP---------ddddd | Rdd = Gss + hi->instruction = HEX_INS_RDD___GSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Gs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = R%ds", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa200000) { + // Instruction: 6: 01101010001sssssPP---------ddddd | Rd = Gs + hi->instruction = HEX_INS_RD___GS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Gs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000060) { + // Instruction: 6: 01100100000sssssPP------011----- | ciad (Rs) + hi->instruction = HEX_INS_CIAD__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "ciad (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5000000) { + // Instruction: 6: 01100101000xxxxxPP-------------- | crswap (Rx, sgp0) + hi->instruction = HEX_INS_CRSWAP__RX__SGP0_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "crswap (R%d, sgp0)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5200000) { + // Instruction: 6: 01100101001xxxxxPP-------------- | crswap (Rx, sgp1) + hi->instruction = HEX_INS_CRSWAP__RX__SGP1_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "crswap (R%d, sgp1)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfc0001f) == 0xd800000) { + // Instruction: 6: 0110110110-xxxxxPP---------00000 | crswap (Rxx, sgp1:0) + hi->instruction = HEX_INS_CRSWAP__RXX__SGP1_0_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "crswap (R%d:R%d, sgp1:0)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000020) { + // Instruction: 6: 01100100000sssssPP------001----- | cswi (Rs) + hi->instruction = HEX_INS_CSWI__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "cswi (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6000000) { + // Instruction: 6: 01100110000sssssPP---------ddddd | Rd = getimask (Rs) + hi->instruction = HEX_INS_RD___GETIMASK__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = getimask (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200020) { + // Instruction: 6: 01101100001-----PP------001----- | tlblock + hi->instruction = HEX_INS_TLBLOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "tlblock"); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200060) { + // Instruction: 6: 01101100001-----PP------011----- | k0lock + hi->instruction = HEX_INS_K0LOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "k0lock"); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200040) { + // Instruction: 6: 01101100001-----PP------010----- | tlbunlock + hi->instruction = HEX_INS_TLBUNLOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "tlbunlock"); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200080) { + // Instruction: 6: 01101100001-----PP------100----- | k0unlock + hi->instruction = HEX_INS_K0UNLOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "k0unlock"); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6600000) { + // Instruction: 6: 01100110011sssssPP---------ddddd | Rd = iassignr (Rs) + hi->instruction = HEX_INS_RD___IASSIGNR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = iassignr (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000040) { + // Instruction: 6: 01100100000sssssPP------010----- | iassignw (Rs) + hi->instruction = HEX_INS_IASSIGNW__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "iassignw (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4600040) { + // Instruction: 6: 01100100011sssssPP------010----- | nmi (Rs) + hi->instruction = HEX_INS_NMI__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "nmi (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4400020) { + // Instruction: 6: 01100100010sssssPP------001----- | resume (Rs) + hi->instruction = HEX_INS_RESUME__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "resume (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4800000) { + // Instruction: 6: 01100100100sssssPP----tt000----- | setimask (Pt, Rs) + hi->instruction = HEX_INS_SETIMASK__PT__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "setimask (P%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4800060) { + // Instruction: 6: 01100100100sssssPP------011----- | siad (Rs) + hi->instruction = HEX_INS_SIAD__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "siad (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4600020) { + // Instruction: 6: 01100100011sssssPP------001----- | start (Rs) + hi->instruction = HEX_INS_START__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "start (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4600000) { + // Instruction: 6: 01100100011sssssPP------000----- | stop (Rs) + hi->instruction = HEX_INS_STOP__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "stop (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000000) { + // Instruction: 6: 01100100000sssssPP------000----- | swi (Rs) + hi->instruction = HEX_INS_SWI__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "swi (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xc000000) { + // Instruction: 6: 01101100000sssssPP0ttttt-------- | tlbw (Rss, Rt) + hi->instruction = HEX_INS_TLBW__RSS__RT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "tlbw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xc400000) { + // Instruction: 6: 01101100010sssssPP---------ddddd | Rdd = tlbr (Rs) + hi->instruction = HEX_INS_RDD___TLBR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = tlbr (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xc800000) { + // Instruction: 6: 01101100100sssssPP---------ddddd | Rd = tlbp (Rs) + hi->instruction = HEX_INS_RD___TLBP__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = tlbp (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xca00000) { + // Instruction: 6: 01101100101sssssPP-------------- | tlbinvasid (Rs) + hi->instruction = HEX_INS_TLBINVASID__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "tlbinvasid (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xcc00000) { + // Instruction: 6: 01101100110sssssPP0ttttt---ddddd | Rd = ctlbw (Rss, Rt) + hi->instruction = HEX_INS_RD___CTLBW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ctlbw (R%d:R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xce00000) { + // Instruction: 6: 01101100111sssssPP---------ddddd | Rd = tlboc (Rss) + hi->instruction = HEX_INS_RD___TLBOC__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = tlboc (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc00000) == 0x7000000) { + // Instruction: 6: 0110011100-sssssPP--------dddddd | Sd = Rs + hi->instruction = HEX_INS_SD___RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_SYSTEM; + hi->ops[0].op.sys = (((hi_u32) & 0x3f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s = R%d", hex_get_sys_reg(hi->ops[0].op.sys), hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc00000) == 0xd000000) { + // Instruction: 6: 0110110100-sssssPP--------dddddd | Sdd = Rss + hi->instruction = HEX_INS_SDD___RSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_SYSTEM; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.sys = (((hi_u32) & 0x3f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "%s:%s = R%d:R%d", hex_get_sys_reg(hi->ops[0].op.sys + 1), hex_get_sys_reg(hi->ops[0].op.sys), hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0xe800000) { + // Instruction: 6: 011011101-ssssssPP---------ddddd | Rd = Ss + hi->instruction = HEX_INS_RD___SS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_SYSTEM; + hi->ops[1].op.sys = (((hi_u32) & 0x3f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = %s", hi->ops[0].op.reg, hex_get_sys_reg(hi->ops[1].op.sys)); + break; + } + if ((hi_u32 & 0xf800000) == 0xf000000) { + // Instruction: 6: 011011110-ssssssPP---------ddddd | Rdd = Sss + hi->instruction = HEX_INS_RDD___SSS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_SYSTEM; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.sys = (((hi_u32) & 0x3f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = %s:%s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hex_get_sys_reg(hi->ops[1].op.sys + 1), hex_get_sys_reg(hi->ops[1].op.sys)); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4400000) { + // Instruction: 6: 01100100010sssssPP------000----- | wait (Rs) + hi->instruction = HEX_INS_WAIT__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "wait (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200000) { + // Instruction: 6: 01101100001-----PP------000----- | brkpt + hi->instruction = HEX_INS_BRKPT; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "brkpt"); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2400000) { + // Instruction: 6: 01100010010sssssPP-------------- | trace (Rs) + hi->instruction = HEX_INS_TRACE__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "trace (R%d)", hi->ops[0].op.reg); + break; + } + break; + } + case 0x7: { + if ((hi_u32 & 0xfc00000) == 0x6000000) { + // Instruction: 7: 0111011000isssssPPiiiiiiiiiddddd | Rd = and (Rs, #s10) + hi->instruction = HEX_INS_RD___AND__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = and (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x6800000) { + // Instruction: 7: 0111011010isssssPPiiiiiiiiiddddd | Rd = or (Rs, #s10) + hi->instruction = HEX_INS_RD___OR__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = or (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0xf000000) { + // Instruction: 7: 01111111--------PP-------------- | nop + hi->instruction = HEX_INS_NOP; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "nop"); + break; + } + if ((hi_u32 & 0xfc00000) == 0x6400000) { + // Instruction: 7: 0111011001isssssPPiiiiiiiiiddddd | Rd = sub (#s10, Rs) + hi->instruction = HEX_INS_RD___SUB___S10__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = sub (0x%x, R%d)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xa00000) { + // Instruction: 7: 01110000101sssssPP0--------ddddd | Rd = sxtb (Rs) + hi->instruction = HEX_INS_RD___SXTB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sxtb (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xe00000) { + // Instruction: 7: 01110000111sssssPP0--------ddddd | Rd = sxth (Rs) + hi->instruction = HEX_INS_RD___SXTH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sxth (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf200000) == 0x1200000) { + // Instruction: 7: 01110001ii1xxxxxPPiiiiiiiiiiiiii | Rx.L = #u16 + hi->instruction = HEX_INS_RX_L____U16; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x3fff) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d.L = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf200000) == 0x2200000) { + // Instruction: 7: 01110010ii1xxxxxPPiiiiiiiiiiiiii | Rx.H = #u16 + hi->instruction = HEX_INS_RX_H____U16; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x3fff) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d.H = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x8000000) { + // Instruction: 7: 01111000ii-iiiiiPPiiiiiiiiiddddd | Rd = #s16 + hi->instruction = HEX_INS_RD____S16; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xc00000) >> 22) | ((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = 0x%x", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x600000) { + // Instruction: 7: 01110000011sssssPP0--------ddddd | Rd = Rs + hi->instruction = HEX_INS_RD___RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xc00000) { + // Instruction: 7: 01110000110sssssPP0--------ddddd | Rd = zxth (Rs) + hi->instruction = HEX_INS_RD___ZXTH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = zxth (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf602000) == 0x3002000) { + // Instruction: 7: 01110011-00sssssPP1iiiiiiiiddddd | Rdd = combine (Rs, #s8) + hi->instruction = HEX_INS_RDD___COMBINE__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d:R%d = combine (R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602000) == 0x3202000) { + // Instruction: 7: 01110011-01sssssPP1iiiiiiiiddddd | Rdd = combine (#s8, Rs) + hi->instruction = HEX_INS_RDD___COMBINE___S8__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d:R%d = combine (0x%x, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0xc000000) { + // Instruction: 7: 011111000IIIIIIIPPIiiiiiiiiddddd | Rdd = combine (#s8, #S8) + hi->instruction = HEX_INS_RDD___COMBINE___S8___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x7f0000) >> 16) | ((hi_u32 & 0x2000) >> 13)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = combine (0x%x, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf800000) == 0xc800000) { + // Instruction: 7: 011111001--IIIIIPPIiiiiiiiiddddd | Rdd = combine (#s8, #U6) + hi->instruction = HEX_INS_RDD___COMBINE___S8___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x2000) >> 13)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d:R%d = combine (0x%x, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x3000000) { + // Instruction: 7: 011100110uusssssPP0iiiiiiiiddddd | Rd = mux (Pu, Rs, #s8) + hi->instruction = HEX_INS_RD___MUX__PU__RS___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "R%d = mux (P%d, R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x3800000) { + // Instruction: 7: 011100111uusssssPP0iiiiiiiiddddd | Rd = mux (Pu, #s8, Rs) + hi->instruction = HEX_INS_RD___MUX__PU___S8__RS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = mux (P%d, 0x%x, R%d)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xe000000) == 0xa000000) { + // Instruction: 7: 0111101uuIIIIIIIPPIiiiiiiiiddddd | Rd = mux (Pu, #s8, #S8) + hi->instruction = HEX_INS_RD___MUX__PU___S8___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x1800000) >> 23); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x7f0000) >> 16) | ((hi_u32 & 0x2000) >> 13)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "R%d = mux (P%d, 0x%x, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x0) { + // Instruction: 7: 01110000000sssssPP0--------ddddd | Rd = aslh (Rs) + hi->instruction = HEX_INS_RD___ASLH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = aslh (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0x200000) { + // Instruction: 7: 01110000001sssssPP0--------ddddd | Rd = asrh (Rs) + hi->instruction = HEX_INS_RD___ASRH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = asrh (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf802000) == 0x4000000) { + // Instruction: 7: 011101000uusssssPP0iiiiiiiiddddd | if (Pu) Rd = add (Rs, #s8) + hi->instruction = HEX_INS_IF__PU__RD___ADD__RS___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pu) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d) R%d = add (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x4002000) { + // Instruction: 7: 011101000uusssssPP1iiiiiiiiddddd | if (Pu.new) Rd = add (Rs, #s8) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ADD__RS___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if (P%d.new) R%d = add (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x4800000) { + // Instruction: 7: 011101001uusssssPP0iiiiiiiiddddd | if !Pu Rd = add (Rs, #s8) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ADD__RS___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pu + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d R%d = add (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x4802000) { + // Instruction: 7: 011101001uusssssPP1iiiiiiiiddddd | if !Pu.new Rd = add (Rs, #s8) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ADD__RS___S8_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "if !P%d.new R%d = add (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x2000) { + // Instruction: 7: 01110000000sssssPP1-00uu---ddddd | if (Pu) Rd = aslh (Rs) + hi->instruction = HEX_INS_IF__PU__RD___ASLH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = aslh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x2400) { + // Instruction: 7: 01110000000sssssPP1-01uu---ddddd | if (Pu.new) Rd = aslh (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ASLH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = aslh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x2800) { + // Instruction: 7: 01110000000sssssPP1-10uu---ddddd | if !Pu Rd = aslh (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ASLH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = aslh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x2c00) { + // Instruction: 7: 01110000000sssssPP1-11uu---ddddd | if !Pu.new Rd = aslh (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ASLH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = aslh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x202000) { + // Instruction: 7: 01110000001sssssPP1-00uu---ddddd | if (Pu) Rd = asrh (Rs) + hi->instruction = HEX_INS_IF__PU__RD___ASRH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = asrh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x202400) { + // Instruction: 7: 01110000001sssssPP1-01uu---ddddd | if (Pu.new) Rd = asrh (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ASRH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = asrh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x202800) { + // Instruction: 7: 01110000001sssssPP1-10uu---ddddd | if !Pu Rd = asrh (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ASRH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = asrh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x202c00) { + // Instruction: 7: 01110000001sssssPP1-11uu---ddddd | if !Pu.new Rd = asrh (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ASRH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = asrh (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xa02000) { + // Instruction: 7: 01110000101sssssPP1-00uu---ddddd | if (Pu) Rd = sxtb (Rs) + hi->instruction = HEX_INS_IF__PU__RD___SXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = sxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xa02400) { + // Instruction: 7: 01110000101sssssPP1-01uu---ddddd | if (Pu.new) Rd = sxtb (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___SXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = sxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xa02800) { + // Instruction: 7: 01110000101sssssPP1-10uu---ddddd | if !Pu Rd = sxtb (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___SXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = sxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xa02c00) { + // Instruction: 7: 01110000101sssssPP1-11uu---ddddd | if !Pu.new Rd = sxtb (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___SXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = sxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xe02000) { + // Instruction: 7: 01110000111sssssPP1-00uu---ddddd | if (Pu) Rd = sxth (Rs) + hi->instruction = HEX_INS_IF__PU__RD___SXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = sxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xe02400) { + // Instruction: 7: 01110000111sssssPP1-01uu---ddddd | if (Pu.new) Rd = sxth (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___SXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = sxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xe02800) { + // Instruction: 7: 01110000111sssssPP1-10uu---ddddd | if !Pu Rd = sxth (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___SXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = sxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xe02c00) { + // Instruction: 7: 01110000111sssssPP1-11uu---ddddd | if !Pu.new Rd = sxth (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___SXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = sxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf902000) == 0xe000000) { + // Instruction: 7: 011111100uu0iiiiPP0iiiiiiiiddddd | if (Pu) Rd = #s12 + hi->instruction = HEX_INS_IF__PU__RD____S12; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf0000) >> 16) | ((hi_u32 & 0x1fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_PRED_TRUE; // if (Pu) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf902000) == 0xe002000) { + // Instruction: 7: 011111100uu0iiiiPP1iiiiiiiiddddd | if (Pu.new) Rd = #s12 + hi->instruction = HEX_INS_IF__PU_NEW__RD____S12; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf0000) >> 16) | ((hi_u32 & 0x1fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf902000) == 0xe800000) { + // Instruction: 7: 011111101uu0iiiiPP0iiiiiiiiddddd | if !Pu Rd = #s12 + hi->instruction = HEX_INS_IF__NOT_PU_RD____S12; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf0000) >> 16) | ((hi_u32 & 0x1fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_PRED_FALSE; // if !Pu + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf902000) == 0xe802000) { + // Instruction: 7: 011111101uu0iiiiPP1iiiiiiiiddddd | if !Pu.new Rd = #s12 + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD____S12; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600000) >> 21); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf0000) >> 16) | ((hi_u32 & 0x1fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = 0x%x", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x802000) { + // Instruction: 7: 01110000100sssssPP1-00uu---ddddd | if (Pu) Rd = zxtb (Rs) + hi->instruction = HEX_INS_IF__PU__RD___ZXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = zxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x802400) { + // Instruction: 7: 01110000100sssssPP1-01uu---ddddd | if (Pu.new) Rd = zxtb (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ZXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = zxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x802800) { + // Instruction: 7: 01110000100sssssPP1-10uu---ddddd | if !Pu Rd = zxtb (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ZXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = zxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0x802c00) { + // Instruction: 7: 01110000100sssssPP1-11uu---ddddd | if !Pu.new Rd = zxtb (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ZXTB__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = zxtb (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xc02000) { + // Instruction: 7: 01110000110sssssPP1-00uu---ddddd | if (Pu) Rd = zxth (Rs) + hi->instruction = HEX_INS_IF__PU__RD___ZXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = zxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xc02400) { + // Instruction: 7: 01110000110sssssPP1-01uu---ddddd | if (Pu.new) Rd = zxth (Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ZXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = zxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xc02800) { + // Instruction: 7: 01110000110sssssPP1-10uu---ddddd | if !Pu Rd = zxth (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ZXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = zxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02c00) == 0xc02c00) { + // Instruction: 7: 01110000110sssssPP1-11uu---ddddd | if !Pu.new Rd = zxth (Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ZXTH__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = zxth (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc0001c) == 0x5000000) { + // Instruction: 7: 0111010100isssssPPiiiiiiiii000dd | Pd = cmp.eq (Rs, #s10) + hi->instruction = HEX_INS_PD___CMP_EQ__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmp.eq (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc0001c) == 0x5000010) { + // Instruction: 7: 0111010100isssssPPiiiiiiiii100dd | Pd = !cmp.eq (Rs, #s10) + hi->instruction = HEX_INS_PD____NOT_CMP_EQ__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = !cmp.eq (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc0001c) == 0x5400000) { + // Instruction: 7: 0111010101isssssPPiiiiiiiii000dd | Pd = cmp.gt (Rs, #s10) + hi->instruction = HEX_INS_PD___CMP_GT__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmp.gt (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc0001c) == 0x5400010) { + // Instruction: 7: 0111010101isssssPPiiiiiiiii100dd | Pd = !cmp.gt (Rs, #s10) + hi->instruction = HEX_INS_PD____NOT_CMP_GT__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = !cmp.gt (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe0001c) == 0x5800000) { + // Instruction: 7: 01110101100sssssPPiiiiiiiii000dd | Pd = cmp.gtu (Rs, #u9) + hi->instruction = HEX_INS_PD___CMP_GTU__RS___U9_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3fe0) >> 5); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmp.gtu (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe0001c) == 0x5800010) { + // Instruction: 7: 01110101100sssssPPiiiiiiiii100dd | Pd = !cmp.gtu (Rs, #u9) + hi->instruction = HEX_INS_PD____NOT_CMP_GTU__RS___U9_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3fe0) >> 5); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = !cmp.gtu (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602000) == 0x3402000) { + // Instruction: 7: 01110011-10sssssPP1iiiiiiiiddddd | Rd = cmp.eq (Rs, #s8) + hi->instruction = HEX_INS_RD___CMP_EQ__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = cmp.eq (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf602000) == 0x3602000) { + // Instruction: 7: 01110011-11sssssPP1iiiiiiiiddddd | Rd = !cmp.eq (Rs, #s8) + hi->instruction = HEX_INS_RD____NOT_CMP_EQ__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = !cmp.eq (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + break; + } + case 0x8: { + if ((hi_u32 & 0xfe000e0) == 0x8000c0) { + // Instruction: 8: 10000000100sssssPP------110ddddd | Rdd = abs (Rss) + hi->instruction = HEX_INS_RDD___ABS__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = abs (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc800080) { + // Instruction: 8: 10001100100sssssPP------100ddddd | Rd = abs (Rs) + hi->instruction = HEX_INS_RD___ABS__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = abs (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc8000a0) { + // Instruction: 8: 10001100100sssssPP------101ddddd | Rd = abs (Rs) :sat + hi->instruction = HEX_INS_RD___ABS__RS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = abs (R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x800080) { + // Instruction: 8: 10000000100sssssPP------100ddddd | Rdd = not (Rss) + hi->instruction = HEX_INS_RDD___NOT__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = not (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000a0) { + // Instruction: 8: 10000000100sssssPP------101ddddd | Rdd = neg (Rss) + hi->instruction = HEX_INS_RDD___NEG__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = neg (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc8000c0) { + // Instruction: 8: 10001100100sssssPP------110ddddd | Rd = neg (Rs) :sat + hi->instruction = HEX_INS_RD___NEG__RS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = neg (R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8c00020) { + // Instruction: 8: 10001000110sssssPP------001ddddd | Rd = round (Rss) :sat + hi->instruction = HEX_INS_RD___ROUND__RSS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = round (R%d:R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020c0) == 0xce00000) { + // Instruction: 8: 10001100111sssssPP0iiiii00-ddddd | Rd = cround (Rs, #u5) + hi->instruction = HEX_INS_RD___CROUND__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cround (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020c0) == 0xce00080) { + // Instruction: 8: 10001100111sssssPP0iiiii10-ddddd | Rd = round (Rs, #u5) + hi->instruction = HEX_INS_RD___ROUND__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = round (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020c0) == 0xce000c0) { + // Instruction: 8: 10001100111sssssPP0iiiii11-ddddd | Rd = round (Rs, #u5) :sat + hi->instruction = HEX_INS_RD___ROUND__RS___U5___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = round (R%d, 0x%x) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4400000) { + // Instruction: 8: 1000010001-sssssPP------00-ddddd | Rdd = sxtw (Rs) + hi->instruction = HEX_INS_RDD___SXTW__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = sxtw (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x400080) { + // Instruction: 8: 10000000010sssssPP------100ddddd | Rdd = vabsh (Rss) + hi->instruction = HEX_INS_RDD___VABSH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsh (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000a0) { + // Instruction: 8: 10000000010sssssPP------101ddddd | Rdd = vabsh (Rss) :sat + hi->instruction = HEX_INS_RDD___VABSH__RSS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vabsh (R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000c0) { + // Instruction: 8: 10000000010sssssPP------110ddddd | Rdd = vabsw (Rss) + hi->instruction = HEX_INS_RDD___VABSW__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsw (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x4000e0) { + // Instruction: 8: 10000000010sssssPP------111ddddd | Rdd = vabsw (Rss) :sat + hi->instruction = HEX_INS_RDD___VABSW__RSS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vabsw (R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8400000) { + // Instruction: 8: 10001000010sssssPP------000ddddd | Rd = clb (Rss) + hi->instruction = HEX_INS_RD___CLB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = clb (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8400040) { + // Instruction: 8: 10001000010sssssPP------010ddddd | Rd = cl0 (Rss) + hi->instruction = HEX_INS_RD___CL0__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cl0 (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8400080) { + // Instruction: 8: 10001000010sssssPP------100ddddd | Rd = cl1 (Rss) + hi->instruction = HEX_INS_RD___CL1__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cl1 (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8600000) { + // Instruction: 8: 10001000011sssssPP------000ddddd | Rd = normamt (Rss) + hi->instruction = HEX_INS_RD___NORMAMT__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = normamt (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8600040) { + // Instruction: 8: 10001000011sssssPPiiiiii010ddddd | Rd = add (clb (Rss), #s6) + hi->instruction = HEX_INS_RD___ADD__CLB__RSS____S6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (clb (R%d:R%d), 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc200000) { + // Instruction: 8: 10001100001sssssPPiiiiii000ddddd | Rd = add (clb (Rs), #s6) + hi->instruction = HEX_INS_RD___ADD__CLB__RS____S6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (clb (R%d), 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc000080) { + // Instruction: 8: 10001100000sssssPP------100ddddd | Rd = clb (Rs) + hi->instruction = HEX_INS_RD___CLB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = clb (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc0000a0) { + // Instruction: 8: 10001100000sssssPP------101ddddd | Rd = cl0 (Rs) + hi->instruction = HEX_INS_RD___CL0__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cl0 (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc0000c0) { + // Instruction: 8: 10001100000sssssPP------110ddddd | Rd = cl1 (Rs) + hi->instruction = HEX_INS_RD___CL1__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cl1 (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc0000e0) { + // Instruction: 8: 10001100000sssssPP------111ddddd | Rd = normamt (Rs) + hi->instruction = HEX_INS_RD___NORMAMT__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = normamt (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8600060) { + // Instruction: 8: 10001000011sssssPP------011ddddd | Rd = popcount (Rss) + hi->instruction = HEX_INS_RD___POPCOUNT__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = popcount (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8e00040) { + // Instruction: 8: 10001000111sssssPP------010ddddd | Rd = ct0 (Rss) + hi->instruction = HEX_INS_RD___CT0__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ct0 (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8e00080) { + // Instruction: 8: 10001000111sssssPP------100ddddd | Rd = ct1 (Rss) + hi->instruction = HEX_INS_RD___CT1__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ct1 (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc400080) { + // Instruction: 8: 10001100010sssssPP------100ddddd | Rd = ct0 (Rs) + hi->instruction = HEX_INS_RD___CT0__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ct0 (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc4000a0) { + // Instruction: 8: 10001100010sssssPP------101ddddd | Rd = ct1 (Rs) + hi->instruction = HEX_INS_RD___CT1__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = ct1 (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf000000) == 0x1000000) { + // Instruction: 8: 10000001IIIsssssPPiiiiiiIIIddddd | Rdd = extractu (Rss, #u6, #U6) + hi->instruction = HEX_INS_RDD___EXTRACTU__RSS___U6___U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = extractu (R%d:R%d, 0x%x, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0xa000000) { + // Instruction: 8: 10001010IIIsssssPPiiiiiiIIIddddd | Rdd = extract (Rss, #u6, #U6) + hi->instruction = HEX_INS_RDD___EXTRACT__RSS___U6___U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = extract (R%d:R%d, 0x%x, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0xd000000) { + // Instruction: 8: 100011010IIsssssPP0iiiiiIIIddddd | Rd = extractu (Rs, #u5, #U5) + hi->instruction = HEX_INS_RD___EXTRACTU__RS___U5___U5_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = extractu (R%d, 0x%x, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0xd800000) { + // Instruction: 8: 100011011IIsssssPP0iiiiiIIIddddd | Rd = extract (Rs, #u5, #U5) + hi->instruction = HEX_INS_RD___EXTRACT__RS___U5___U5_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = extract (R%d, 0x%x, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x3000000) { + // Instruction: 8: 10000011IIIsssssPPiiiiiiIIIxxxxx | Rxx = insert (Rss, #u6, #U6) + hi->instruction = HEX_INS_RXX___INSERT__RSS___U6___U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = insert (R%d:R%d, 0x%x, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0xf000000) { + // Instruction: 8: 100011110IIsssssPP0iiiiiIIIxxxxx | Rx = insert (Rs, #u5, #U5) + hi->instruction = HEX_INS_RX___INSERT__RS___U5___U5_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = insert (R%d, 0x%x, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc00080) { + // Instruction: 8: 10000000110sssssPP------100ddddd | Rdd = deinterleave (Rss) + hi->instruction = HEX_INS_RDD___DEINTERLEAVE__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = deinterleave (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc000a0) { + // Instruction: 8: 10000000110sssssPP------101ddddd | Rdd = interleave (Rss) + hi->instruction = HEX_INS_RDD___INTERLEAVE__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = interleave (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc000c0) { + // Instruction: 8: 10000000110sssssPP------110ddddd | Rdd = brev (Rss) + hi->instruction = HEX_INS_RDD___BREV__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = brev (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc4000c0) { + // Instruction: 8: 10001100010sssssPP------110ddddd | Rd = brev (Rs) + hi->instruction = HEX_INS_RD___BREV__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = brev (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xcc00000) { + // Instruction: 8: 10001100110sssssPP0iiiii000ddddd | Rd = setbit (Rs, #u5) + hi->instruction = HEX_INS_RD___SETBIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = setbit (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xcc00020) { + // Instruction: 8: 10001100110sssssPP0iiiii001ddddd | Rd = clrbit (Rs, #u5) + hi->instruction = HEX_INS_RD___CLRBIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = clrbit (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xcc00040) { + // Instruction: 8: 10001100110sssssPP0iiiii010ddddd | Rd = togglebit (Rs, #u5) + hi->instruction = HEX_INS_RD___TOGGLEBIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = togglebit (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8c00080) { + // Instruction: 8: 10001000110sssssPP0iiiii100ddddd | Rdd = bitsplit (Rs, #u5) + hi->instruction = HEX_INS_RDD___BITSPLIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = bitsplit (R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x7000000) { + // Instruction: 8: 1000011100isssssPPIIIIIIiiixxxxx | Rx = tableidxb (Rs, #u4, #S6) :raw + hi->instruction = HEX_INS_RX___TABLEIDXB__RS___U4___S6___RAW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d = tableidxb (R%d, 0x%x, 0x%x) :raw", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x7400000) { + // Instruction: 8: 1000011101isssssPPIIIIIIiiixxxxx | Rx = tableidxh (Rs, #u4, #S6) :raw + hi->instruction = HEX_INS_RX___TABLEIDXH__RS___U4___S6___RAW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d = tableidxh (R%d, 0x%x, 0x%x) :raw", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x7800000) { + // Instruction: 8: 1000011110isssssPPIIIIIIiiixxxxx | Rx = tableidxw (Rs, #u4, #S6) :raw + hi->instruction = HEX_INS_RX___TABLEIDXW__RS___U4___S6___RAW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d = tableidxw (R%d, 0x%x, 0x%x) :raw", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x7c00000) { + // Instruction: 8: 1000011111isssssPPIIIIIIiiixxxxx | Rx = tableidxd (Rs, #u4, #S6) :raw + hi->instruction = HEX_INS_RX___TABLEIDXD__RS___U4___S6___RAW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x3f00) >> 8); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d = tableidxd (R%d, 0x%x, 0x%x) :raw", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000e0) { + // Instruction: 8: 10000000100sssssPP------111ddddd | Rdd = vconj (Rss) :sat + hi->instruction = HEX_INS_RDD___VCONJ__RSS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vconj (R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5e00000) { + // Instruction: 8: 10000101111sssssPP0iiiii------dd | Pd = sfclass (Rs, #u5) + hi->instruction = HEX_INS_PD___SFCLASS__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = sfclass (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x4800000) { + // Instruction: 8: 100001001--sssssPP------000ddddd | Rdd = convert_sf2df (Rs) + hi->instruction = HEX_INS_RDD___CONVERT_SF2DF__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_sf2df (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000020) { + // Instruction: 8: 10001000000sssssPP------001ddddd | Rd = convert_df2sf (Rss) + hi->instruction = HEX_INS_RD___CONVERT_DF2SF__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_df2sf (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe00040) { + // Instruction: 8: 10000000111sssssPP0-----010ddddd | Rdd = convert_ud2df (Rss) + hi->instruction = HEX_INS_RDD___CONVERT_UD2DF__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_ud2df (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe00060) { + // Instruction: 8: 10000000111sssssPP0-----011ddddd | Rdd = convert_d2df (Rss) + hi->instruction = HEX_INS_RDD___CONVERT_D2DF__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_d2df (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x4800020) { + // Instruction: 8: 100001001--sssssPP------001ddddd | Rdd = convert_uw2df (Rs) + hi->instruction = HEX_INS_RDD___CONVERT_UW2DF__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_uw2df (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x4800040) { + // Instruction: 8: 100001001--sssssPP------010ddddd | Rdd = convert_w2df (Rs) + hi->instruction = HEX_INS_RDD___CONVERT_W2DF__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_w2df (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8200020) { + // Instruction: 8: 10001000001sssssPP------001ddddd | Rd = convert_ud2sf (Rss) + hi->instruction = HEX_INS_RD___CONVERT_UD2SF__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_ud2sf (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8400020) { + // Instruction: 8: 10001000010sssssPP------001ddddd | Rd = convert_d2sf (Rss) + hi->instruction = HEX_INS_RD___CONVERT_D2SF__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_d2sf (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb200000) { + // Instruction: 8: 10001011001sssssPP------000ddddd | Rd = convert_uw2sf (Rs) + hi->instruction = HEX_INS_RD___CONVERT_UW2SF__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_uw2sf (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb400000) { + // Instruction: 8: 10001011010sssssPP------000ddddd | Rd = convert_w2sf (Rs) + hi->instruction = HEX_INS_RD___CONVERT_W2SF__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_w2sf (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe00000) { + // Instruction: 8: 10000000111sssssPP0-----000ddddd | Rdd = convert_df2d (Rss) + hi->instruction = HEX_INS_RDD___CONVERT_DF2D__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_df2d (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe00020) { + // Instruction: 8: 10000000111sssssPP0-----001ddddd | Rdd = convert_df2ud (Rss) + hi->instruction = HEX_INS_RDD___CONVERT_DF2UD__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_df2ud (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe000c0) { + // Instruction: 8: 10000000111sssssPP0-----110ddddd | Rdd = convert_df2d (Rss) :chop + hi->instruction = HEX_INS_RDD___CONVERT_DF2D__RSS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d:R%d = convert_df2d (R%d:R%d) :chop", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xe000e0) { + // Instruction: 8: 10000000111sssssPP0-----111ddddd | Rdd = convert_df2ud (Rss) :chop + hi->instruction = HEX_INS_RDD___CONVERT_DF2UD__RSS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d:R%d = convert_df2ud (R%d:R%d) :chop", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x4800060) { + // Instruction: 8: 100001001--sssssPP------011ddddd | Rdd = convert_sf2ud (Rs) + hi->instruction = HEX_INS_RDD___CONVERT_SF2UD__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_sf2ud (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x4800080) { + // Instruction: 8: 100001001--sssssPP------100ddddd | Rdd = convert_sf2d (Rs) + hi->instruction = HEX_INS_RDD___CONVERT_SF2D__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_sf2d (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x48000a0) { + // Instruction: 8: 100001001--sssssPP------101ddddd | Rdd = convert_sf2ud (Rs) :ch + hi->instruction = HEX_INS_RDD___CONVERT_SF2UD__RS___CH; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = convert_sf2ud (R%d) :ch", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf8000e0) == 0x48000c0) { + // Instruction: 8: 100001001--sssssPP------110ddddd | Rdd = convert_sf2d (Rs) :chop + hi->instruction = HEX_INS_RDD___CONVERT_SF2D__RS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d:R%d = convert_sf2d (R%d) :chop", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8600020) { + // Instruction: 8: 10001000011sssssPP------001ddddd | Rd = convert_df2uw (Rss) + hi->instruction = HEX_INS_RD___CONVERT_DF2UW__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_df2uw (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8800020) { + // Instruction: 8: 10001000100sssssPP------001ddddd | Rd = convert_df2w (Rss) + hi->instruction = HEX_INS_RD___CONVERT_DF2W__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_df2w (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8a00020) { + // Instruction: 8: 10001000101sssssPP------001ddddd | Rd = convert_df2uw (Rss) :chop + hi->instruction = HEX_INS_RD___CONVERT_DF2UW__RSS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d = convert_df2uw (R%d:R%d) :chop", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8e00020) { + // Instruction: 8: 10001000111sssssPP------001ddddd | Rd = convert_df2w (Rss) :chop + hi->instruction = HEX_INS_RD___CONVERT_DF2W__RSS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d = convert_df2w (R%d:R%d) :chop", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb600000) { + // Instruction: 8: 10001011011sssssPP------000ddddd | Rd = convert_sf2uw (Rs) + hi->instruction = HEX_INS_RD___CONVERT_SF2UW__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_sf2uw (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb600020) { + // Instruction: 8: 10001011011sssssPP------001ddddd | Rd = convert_sf2uw (Rs) :chop + hi->instruction = HEX_INS_RD___CONVERT_SF2UW__RS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d = convert_sf2uw (R%d) :chop", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb800000) { + // Instruction: 8: 10001011100sssssPP------000ddddd | Rd = convert_sf2w (Rs) + hi->instruction = HEX_INS_RD___CONVERT_SF2W__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = convert_sf2w (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xb800020) { + // Instruction: 8: 10001011100sssssPP------001ddddd | Rd = convert_sf2w (Rs) :chop + hi->instruction = HEX_INS_RD___CONVERT_SF2W__RS___CHOP; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CHOP; // :chop + sprintf(hi->mnem, "R%d = convert_sf2w (R%d) :chop", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xba00000) { + // Instruction: 8: 10001011101sssssPP------000ddddd | Rd = sffixupr (Rs) + hi->instruction = HEX_INS_RD___SFFIXUPR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sffixupr (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xbe00000) { + // Instruction: 8: 10001011111sssssPP------0eeddddd | Rd, Pe = sfinvsqrta (Rs) + hi->instruction = HEX_INS_RD__PE___SFINVSQRTA__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d, P%d = sfinvsqrta (R%d)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8c00000) { + // Instruction: 8: 10001000110sssssPP------000ddddd | Rd = sat (Rss) + hi->instruction = HEX_INS_RD___SAT__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sat (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xcc00080) { + // Instruction: 8: 10001100110sssssPP------100ddddd | Rd = sath (Rs) + hi->instruction = HEX_INS_RD___SATH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sath (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xcc000a0) { + // Instruction: 8: 10001100110sssssPP------101ddddd | Rd = satuh (Rs) + hi->instruction = HEX_INS_RD___SATUH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = satuh (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xcc000c0) { + // Instruction: 8: 10001100110sssssPP------110ddddd | Rd = satub (Rs) + hi->instruction = HEX_INS_RD___SATUB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = satub (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xcc000e0) { + // Instruction: 8: 10001100110sssssPP------111ddddd | Rd = satb (Rs) + hi->instruction = HEX_INS_RD___SATB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = satb (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc8000e0) { + // Instruction: 8: 10001100100sssssPP------111ddddd | Rd = swiz (Rs) + hi->instruction = HEX_INS_RD___SWIZ__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = swiz (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8800080) { + // Instruction: 8: 10001000100sssssPP------100ddddd | Rd = vrndwh (Rss) + hi->instruction = HEX_INS_RD___VRNDWH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vrndwh (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x88000c0) { + // Instruction: 8: 10001000100sssssPP------110ddddd | Rd = vrndwh (Rss) :sat + hi->instruction = HEX_INS_RD___VRNDWH__RSS___SAT; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vrndwh (R%d:R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000000) { + // Instruction: 8: 10001000000sssssPP------000ddddd | Rd = vsathub (Rss) + hi->instruction = HEX_INS_RD___VSATHUB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsathub (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000040) { + // Instruction: 8: 10001000000sssssPP------010ddddd | Rd = vsatwh (Rss) + hi->instruction = HEX_INS_RD___VSATWH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsatwh (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8000080) { + // Instruction: 8: 10001000000sssssPP------100ddddd | Rd = vsatwuh (Rss) + hi->instruction = HEX_INS_RD___VSATWUH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsatwuh (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x80000c0) { + // Instruction: 8: 10001000000sssssPP------110ddddd | Rd = vsathb (Rss) + hi->instruction = HEX_INS_RD___VSATHB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsathb (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc800000) { + // Instruction: 8: 1000110010-sssssPP------00-ddddd | Rd = vsathb (Rs) + hi->instruction = HEX_INS_RD___VSATHB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsathb (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc800040) { + // Instruction: 8: 1000110010-sssssPP------01-ddddd | Rd = vsathub (Rs) + hi->instruction = HEX_INS_RD___VSATHUB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsathub (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x80) { + // Instruction: 8: 10000000000sssssPP------100ddddd | Rdd = vsathub (Rss) + hi->instruction = HEX_INS_RDD___VSATHUB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsathub (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xa0) { + // Instruction: 8: 10000000000sssssPP------101ddddd | Rdd = vsatwuh (Rss) + hi->instruction = HEX_INS_RDD___VSATWUH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsatwuh (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc0) { + // Instruction: 8: 10000000000sssssPP------110ddddd | Rdd = vsatwh (Rss) + hi->instruction = HEX_INS_RDD___VSATWH__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsatwh (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xe0) { + // Instruction: 8: 10000000000sssssPP------111ddddd | Rdd = vsathb (Rss) + hi->instruction = HEX_INS_RDD___VSATHB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsathb (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4400080) { + // Instruction: 8: 1000010001-sssssPP------10-ddddd | Rdd = vsplatb (Rs) + hi->instruction = HEX_INS_RDD___VSPLATB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsplatb (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc4000e0) { + // Instruction: 8: 10001100010sssssPP------111ddddd | Rd = vsplatb (Rs) + hi->instruction = HEX_INS_RD___VSPLATB__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsplatb (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4400040) { + // Instruction: 8: 1000010001-sssssPP------01-ddddd | Rdd = vsplath (Rs) + hi->instruction = HEX_INS_RDD___VSPLATH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsplath (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4000000) { + // Instruction: 8: 1000010000-sssssPP------00-ddddd | Rdd = vsxtbh (Rs) + hi->instruction = HEX_INS_RDD___VSXTBH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsxtbh (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4000080) { + // Instruction: 8: 1000010000-sssssPP------10-ddddd | Rdd = vsxthw (Rs) + hi->instruction = HEX_INS_RDD___VSXTHW__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsxthw (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8800000) { + // Instruction: 8: 10001000100sssssPP------000ddddd | Rd = vtrunohb (Rss) + hi->instruction = HEX_INS_RD___VTRUNOHB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vtrunohb (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x8800040) { + // Instruction: 8: 10001000100sssssPP------010ddddd | Rd = vtrunehb (Rss) + hi->instruction = HEX_INS_RD___VTRUNEHB__RSS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vtrunehb (R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x4000040) { + // Instruction: 8: 1000010000-sssssPP------01-ddddd | Rdd = vzxtbh (Rs) + hi->instruction = HEX_INS_RDD___VZXTBH__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vzxtbh (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x40000c0) { + // Instruction: 8: 1000010000-sssssPP------11-ddddd | Rdd = vzxthw (Rs) + hi->instruction = HEX_INS_RDD___VZXTHW__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vzxthw (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5800000) { + // Instruction: 8: 10000101100sssssPPiiiiii------dd | Pd = bitsclr (Rs, #u6) + hi->instruction = HEX_INS_PD___BITSCLR__RS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = bitsclr (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5a00000) { + // Instruction: 8: 10000101101sssssPPiiiiii------dd | Pd = !bitsclr (Rs, #u6) + hi->instruction = HEX_INS_PD____NOT_BITSCLR__RS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !bitsclr (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x6000000) { + // Instruction: 8: 10000110--------PP----tt---ddddd | Rdd = mask (Pt) + hi->instruction = HEX_INS_RDD___MASK__PT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mask (P%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.pred); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5400000) { + // Instruction: 8: 10000101010sssssPP------------dd | Pd = Rs + hi->instruction = HEX_INS_PD___RS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xf400000) == 0x9400000) { + // Instruction: 8: 10001001-1----ssPP---------ddddd | Rd = Ps + hi->instruction = HEX_INS_RD___PS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = P%d", hi->ops[0].op.reg, hi->ops[1].op.pred); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5000000) { + // Instruction: 8: 10000101000sssssPP0iiiii------dd | Pd = tstbit (Rs, #u5) + hi->instruction = HEX_INS_PD___TSTBIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = tstbit (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe02000) == 0x5200000) { + // Instruction: 8: 10000101001sssssPP0iiiii------dd | Pd = !tstbit (Rs, #u5) + hi->instruction = HEX_INS_PD____NOT_TSTBIT__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !tstbit (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf600000) == 0x9000000) { + // Instruction: 8: 10001001-00---ssPP----tt---ddddd | Rd = vitpack (Ps, Pt) + hi->instruction = HEX_INS_RD___VITPACK__PS__PT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x30000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_PREDICATE; + hi->ops[2].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vitpack (P%d, P%d)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.pred); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x0) { + // Instruction: 8: 10000000000sssssPPiiiiii000ddddd | Rdd = asr (Rss, #u6) + hi->instruction = HEX_INS_RDD___ASR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = asr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x20) { + // Instruction: 8: 10000000000sssssPPiiiiii001ddddd | Rdd = lsr (Rss, #u6) + hi->instruction = HEX_INS_RDD___LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x40) { + // Instruction: 8: 10000000000sssssPPiiiiii010ddddd | Rdd = asl (Rss, #u6) + hi->instruction = HEX_INS_RDD___ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x60) { + // Instruction: 8: 10000000000sssssPPiiiiii011ddddd | Rdd = rol (Rss, #u6) + hi->instruction = HEX_INS_RDD___ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc000000) { + // Instruction: 8: 10001100000sssssPP0iiiii000ddddd | Rd = asr (Rs, #u5) + hi->instruction = HEX_INS_RD___ASR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = asr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc000020) { + // Instruction: 8: 10001100000sssssPP0iiiii001ddddd | Rd = lsr (Rs, #u5) + hi->instruction = HEX_INS_RD___LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc000040) { + // Instruction: 8: 10001100000sssssPP0iiiii010ddddd | Rd = asl (Rs, #u5) + hi->instruction = HEX_INS_RD___ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc000060) { + // Instruction: 8: 10001100000sssssPP0iiiii011ddddd | Rd = rol (Rs, #u5) + hi->instruction = HEX_INS_RD___ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2000000) { + // Instruction: 8: 1000001000-sssssPPiiiiii000xxxxx | Rxx -= asr (Rss, #u6) + hi->instruction = HEX_INS_RXX__MINUS_EQ__ASR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= asr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2000020) { + // Instruction: 8: 1000001000-sssssPPiiiiii001xxxxx | Rxx -= lsr (Rss, #u6) + hi->instruction = HEX_INS_RXX__MINUS_EQ__LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2000040) { + // Instruction: 8: 1000001000-sssssPPiiiiii010xxxxx | Rxx -= asl (Rss, #u6) + hi->instruction = HEX_INS_RXX__MINUS_EQ__ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2000060) { + // Instruction: 8: 1000001000-sssssPPiiiiii011xxxxx | Rxx -= rol (Rss, #u6) + hi->instruction = HEX_INS_RXX__MINUS_EQ__ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2000080) { + // Instruction: 8: 1000001000-sssssPPiiiiii100xxxxx | Rxx += asr (Rss, #u6) + hi->instruction = HEX_INS_RXX__PLUS_EQ__ASR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += asr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x20000a0) { + // Instruction: 8: 1000001000-sssssPPiiiiii101xxxxx | Rxx += lsr (Rss, #u6) + hi->instruction = HEX_INS_RXX__PLUS_EQ__LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x20000c0) { + // Instruction: 8: 1000001000-sssssPPiiiiii110xxxxx | Rxx += asl (Rss, #u6) + hi->instruction = HEX_INS_RXX__PLUS_EQ__ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x20000e0) { + // Instruction: 8: 1000001000-sssssPPiiiiii111xxxxx | Rxx += rol (Rss, #u6) + hi->instruction = HEX_INS_RXX__PLUS_EQ__ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe000000) { + // Instruction: 8: 1000111000-sssssPP0iiiii000xxxxx | Rx -= asr (Rs, #u5) + hi->instruction = HEX_INS_RX__MINUS_EQ__ASR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= asr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe000020) { + // Instruction: 8: 1000111000-sssssPP0iiiii001xxxxx | Rx -= lsr (Rs, #u5) + hi->instruction = HEX_INS_RX__MINUS_EQ__LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe000040) { + // Instruction: 8: 1000111000-sssssPP0iiiii010xxxxx | Rx -= asl (Rs, #u5) + hi->instruction = HEX_INS_RX__MINUS_EQ__ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe000060) { + // Instruction: 8: 1000111000-sssssPP0iiiii011xxxxx | Rx -= rol (Rs, #u5) + hi->instruction = HEX_INS_RX__MINUS_EQ__ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe000080) { + // Instruction: 8: 1000111000-sssssPP0iiiii100xxxxx | Rx += asr (Rs, #u5) + hi->instruction = HEX_INS_RX__PLUS_EQ__ASR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += asr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe0000a0) { + // Instruction: 8: 1000111000-sssssPP0iiiii101xxxxx | Rx += lsr (Rs, #u5) + hi->instruction = HEX_INS_RX__PLUS_EQ__LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe0000c0) { + // Instruction: 8: 1000111000-sssssPP0iiiii110xxxxx | Rx += asl (Rs, #u5) + hi->instruction = HEX_INS_RX__PLUS_EQ__ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe0000e0) { + // Instruction: 8: 1000111000-sssssPP0iiiii111xxxxx | Rx += rol (Rs, #u5) + hi->instruction = HEX_INS_RX__PLUS_EQ__ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2400000) { + // Instruction: 8: 1000001001-sssssPPiiiiii000xxxxx | Rxx &= asr (Rss, #u6) + hi->instruction = HEX_INS_RXX__AND_EQ__ASR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= asr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2400020) { + // Instruction: 8: 1000001001-sssssPPiiiiii001xxxxx | Rxx &= lsr (Rss, #u6) + hi->instruction = HEX_INS_RXX__AND_EQ__LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2400040) { + // Instruction: 8: 1000001001-sssssPPiiiiii010xxxxx | Rxx &= asl (Rss, #u6) + hi->instruction = HEX_INS_RXX__AND_EQ__ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2400060) { + // Instruction: 8: 1000001001-sssssPPiiiiii011xxxxx | Rxx &= rol (Rss, #u6) + hi->instruction = HEX_INS_RXX__AND_EQ__ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2400080) { + // Instruction: 8: 1000001001-sssssPPiiiiii100xxxxx | Rxx |= asr (Rss, #u6) + hi->instruction = HEX_INS_RXX__OR_EQ__ASR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= asr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x24000a0) { + // Instruction: 8: 1000001001-sssssPPiiiiii101xxxxx | Rxx |= lsr (Rss, #u6) + hi->instruction = HEX_INS_RXX__OR_EQ__LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x24000c0) { + // Instruction: 8: 1000001001-sssssPPiiiiii110xxxxx | Rxx |= asl (Rss, #u6) + hi->instruction = HEX_INS_RXX__OR_EQ__ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x24000e0) { + // Instruction: 8: 1000001001-sssssPPiiiiii111xxxxx | Rxx |= rol (Rss, #u6) + hi->instruction = HEX_INS_RXX__OR_EQ__ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2800020) { + // Instruction: 8: 1000001010-sssssPPiiiiii001xxxxx | Rxx ^= lsr (Rss, #u6) + hi->instruction = HEX_INS_RXX____LSR__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= lsr (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2800040) { + // Instruction: 8: 1000001010-sssssPPiiiiii010xxxxx | Rxx ^= asl (Rss, #u6) + hi->instruction = HEX_INS_RXX____ASL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= asl (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x2800060) { + // Instruction: 8: 1000001010-sssssPPiiiiii011xxxxx | Rxx ^= rol (Rss, #u6) + hi->instruction = HEX_INS_RXX____ROL__RSS___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= rol (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe400000) { + // Instruction: 8: 1000111001-sssssPP0iiiii000xxxxx | Rx &= asr (Rs, #u5) + hi->instruction = HEX_INS_RX__AND_EQ__ASR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= asr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe400020) { + // Instruction: 8: 1000111001-sssssPP0iiiii001xxxxx | Rx &= lsr (Rs, #u5) + hi->instruction = HEX_INS_RX__AND_EQ__LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe400040) { + // Instruction: 8: 1000111001-sssssPP0iiiii010xxxxx | Rx &= asl (Rs, #u5) + hi->instruction = HEX_INS_RX__AND_EQ__ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe400060) { + // Instruction: 8: 1000111001-sssssPP0iiiii011xxxxx | Rx &= rol (Rs, #u5) + hi->instruction = HEX_INS_RX__AND_EQ__ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe400080) { + // Instruction: 8: 1000111001-sssssPP0iiiii100xxxxx | Rx |= asr (Rs, #u5) + hi->instruction = HEX_INS_RX__OR_EQ__ASR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= asr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe4000a0) { + // Instruction: 8: 1000111001-sssssPP0iiiii101xxxxx | Rx |= lsr (Rs, #u5) + hi->instruction = HEX_INS_RX__OR_EQ__LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe4000c0) { + // Instruction: 8: 1000111001-sssssPP0iiiii110xxxxx | Rx |= asl (Rs, #u5) + hi->instruction = HEX_INS_RX__OR_EQ__ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe4000e0) { + // Instruction: 8: 1000111001-sssssPP0iiiii111xxxxx | Rx |= rol (Rs, #u5) + hi->instruction = HEX_INS_RX__OR_EQ__ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe800020) { + // Instruction: 8: 1000111010-sssssPP0iiiii001xxxxx | Rx ^= lsr (Rs, #u5) + hi->instruction = HEX_INS_RX____LSR__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= lsr (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe800040) { + // Instruction: 8: 1000111010-sssssPP0iiiii010xxxxx | Rx ^= asl (Rs, #u5) + hi->instruction = HEX_INS_RX____ASL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= asl (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xe800060) { + // Instruction: 8: 1000111010-sssssPP0iiiii011xxxxx | Rx ^= rol (Rs, #u5) + hi->instruction = HEX_INS_RX____ROL__RS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= rol (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0xc000e0) { + // Instruction: 8: 10000000110sssssPPiiiiii111ddddd | Rdd = asr (Rss, #u6) :rnd + hi->instruction = HEX_INS_RDD___ASR__RSS___U6___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = asr (R%d:R%d, 0x%x) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc400000) { + // Instruction: 8: 10001100010sssssPP0iiiii000ddddd | Rd = asr (Rs, #u5) :rnd + hi->instruction = HEX_INS_RD___ASR__RS___U5___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = asr (R%d, 0x%x) :rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xc400040) { + // Instruction: 8: 10001100010sssssPP0iiiii010ddddd | Rd = asl (Rs, #u5) :sat + hi->instruction = HEX_INS_RD___ASL__RS___U5___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = asl (R%d, 0x%x) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x800000) { + // Instruction: 8: 10000000100sssssPP00iiii000ddddd | Rdd = vasrh (Rss, #u4) + hi->instruction = HEX_INS_RDD___VASRH__RSS___U4_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vasrh (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x800020) { + // Instruction: 8: 10000000100sssssPP00iiii001ddddd | Rdd = vlsrh (Rss, #u4) + hi->instruction = HEX_INS_RDD___VLSRH__RSS___U4_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlsrh (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x800040) { + // Instruction: 8: 10000000100sssssPP00iiii010ddddd | Rdd = vaslh (Rss, #u4) + hi->instruction = HEX_INS_RDD___VASLH__RSS___U4_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaslh (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x200000) { + // Instruction: 8: 10000000001sssssPP00iiii000ddddd | Rdd = vasrh (Rss, #u4) :raw + hi->instruction = HEX_INS_RDD___VASRH__RSS___U4___RAW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d:R%d = vasrh (R%d:R%d, 0x%x) :raw", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x8600080) { + // Instruction: 8: 10001000011sssssPP00iiii100ddddd | Rd = vasrhub (Rss, #u4) :raw + hi->instruction = HEX_INS_RD___VASRHUB__RSS___U4___RAW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d = vasrhub (R%d:R%d, 0x%x) :raw", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe030e0) == 0x86000a0) { + // Instruction: 8: 10001000011sssssPP00iiii101ddddd | Rd = vasrhub (Rss, #u4) :sat + hi->instruction = HEX_INS_RD___VASRHUB__RSS___U4___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xf00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vasrhub (R%d:R%d, 0x%x) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x400000) { + // Instruction: 8: 10000000010sssssPP0iiiii000ddddd | Rdd = vasrw (Rss, #u5) + hi->instruction = HEX_INS_RDD___VASRW__RSS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vasrw (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x400020) { + // Instruction: 8: 10000000010sssssPP0iiiii001ddddd | Rdd = vlsrw (Rss, #u5) + hi->instruction = HEX_INS_RDD___VLSRW__RSS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlsrw (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x400040) { + // Instruction: 8: 10000000010sssssPP0iiiii010ddddd | Rdd = vaslw (Rss, #u5) + hi->instruction = HEX_INS_RDD___VASLW__RSS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaslw (R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8c00040) { + // Instruction: 8: 10001000110sssssPP0iiiii010ddddd | Rd = vasrw (Rss, #u5) + hi->instruction = HEX_INS_RD___VASRW__RSS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vasrw (R%d:R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + break; + } + case 0x9: { + if ((hi_u32 & 0x9e00000) == 0x1c00000) { + // Instruction: 9: 10010ii1110sssssPPiiiiiiiiiddddd | Rdd = memd (Rs + #s11:3) + hi->instruction = HEX_INS_RDD___MEMD__RS____S11_3_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 3); + sprintf(hi->mnem, "R%d:R%d = memd (R%d + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9c00000) { + // Instruction: 9: 10011001110xxxxxPPu0--0iiiiddddd | Rdd = memd (Rx ++ #s4:3:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMD__RX_____S4_3_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9c00200) { + // Instruction: 9: 10011001110xxxxxPPu0--1-0--ddddd | Rdd = memd (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMD__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d ++ I:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xbc01000) { + // Instruction: 9: 10011011110eeeeePP01IIII-IIddddd | Rdd = memd (Re = #U6) + hi->instruction = HEX_INS_RDD___MEMD__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d:R%d = memd (R%d = 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xbc00000) { + // Instruction: 9: 10011011110xxxxxPP00---iiiiddddd | Rdd = memd (Rx ++ #s4:3) + hi->instruction = HEX_INS_RDD___MEMD__RX_____S4_3_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d ++ 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xdc01000) { + // Instruction: 9: 10011101110tttttPPi1IIIIiIIddddd | Rdd = memd (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RDD___MEMD__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d:R%d = memd (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xdc00000) { + // Instruction: 9: 10011101110xxxxxPPu0----0--ddddd | Rdd = memd (Rx ++ Mu) + hi->instruction = HEX_INS_RDD___MEMD__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d ++ R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xfc00000) { + // Instruction: 9: 10011111110xxxxxPPu0----0--ddddd | Rdd = memd (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RDD___MEMD__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd (R%d ++ R%d:brev)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xbc02000) { + // Instruction: 9: 10011011110xxxxxPP100ttiiiiddddd | if (Pt) Rdd = memd (Rx ++ #s4:3) + hi->instruction = HEX_INS_IF__PT__RDD___MEMD__RX_____S4_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) R%d:R%d = memd (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xbc02800) { + // Instruction: 9: 10011011110xxxxxPP101ttiiiiddddd | if !Pt Rdd = memd (Rx ++ #s4:3) + hi->instruction = HEX_INS_IF__NOT_PT_RDD___MEMD__RX_____S4_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d:R%d = memd (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xbc03000) { + // Instruction: 9: 10011011110xxxxxPP110ttiiiiddddd | if (Pt.new) Rdd = memd (Rx ++ #s4:3) + hi->instruction = HEX_INS_IF__PT_NEW__RDD___MEMD__RX_____S4_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d:R%d = memd (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xbc03800) { + // Instruction: 9: 10011011110xxxxxPP111ttiiiiddddd | if !Pt.new Rdd = memd (Rx ++ #s4:3) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RDD___MEMD__RX_____S4_3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 3; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d:R%d = memd (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xfc02080) { + // Instruction: 9: 10011111110iiiiiPP100tti1--ddddd | if (Pt) Rdd = memd (#u6) + hi->instruction = HEX_INS_IF__PT__RDD___MEMD___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d:R%d = memd (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xfc02880) { + // Instruction: 9: 10011111110iiiiiPP101tti1--ddddd | if !Pt Rdd = memd (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RDD___MEMD___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d:R%d = memd (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xfc03080) { + // Instruction: 9: 10011111110iiiiiPP110tti1--ddddd | if (Pt.new) Rdd = memd (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RDD___MEMD___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d:R%d = memd (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xfc03880) { + // Instruction: 9: 10011111110iiiiiPP111tti1--ddddd | if !Pt.new Rdd = memd (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RDD___MEMD___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d:R%d = memd (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1000000) { + // Instruction: 9: 10010ii1000sssssPPiiiiiiiiiddddd | Rd = memb (Rs + #s11:0) + hi->instruction = HEX_INS_RD___MEMB__RS____S11_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memb (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9000000) { + // Instruction: 9: 10011001000xxxxxPPu0--0iiiiddddd | Rd = memb (Rx ++ #s4:0:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMB__RX_____S4_0_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9000200) { + // Instruction: 9: 10011001000xxxxxPPu0--1-0--ddddd | Rd = memb (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMB__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb001000) { + // Instruction: 9: 10011011000eeeeePP01IIII-IIddddd | Rd = memb (Re = #U6) + hi->instruction = HEX_INS_RD___MEMB__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memb (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb000000) { + // Instruction: 9: 10011011000xxxxxPP00---iiiiddddd | Rd = memb (Rx ++ #s4:0) + hi->instruction = HEX_INS_RD___MEMB__RX_____S4_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xd001000) { + // Instruction: 9: 10011101000tttttPPi1IIIIiIIddddd | Rd = memb (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMB__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memb (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xd000000) { + // Instruction: 9: 10011101000xxxxxPPu0----0--ddddd | Rd = memb (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMB__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xf000000) { + // Instruction: 9: 10011111000xxxxxPPu0----0--ddddd | Rd = memb (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMB__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memb (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb002000) { + // Instruction: 9: 10011011000xxxxxPP100ttiiiiddddd | if (Pt) Rd = memb (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__PT__RD___MEMB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) R%d = memb (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb002800) { + // Instruction: 9: 10011011000xxxxxPP101ttiiiiddddd | if !Pt Rd = memb (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d = memb (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb003000) { + // Instruction: 9: 10011011000xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memb (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memb (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb003800) { + // Instruction: 9: 10011011000xxxxxPP111ttiiiiddddd | if !Pt.new Rd = memb (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d = memb (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf002080) { + // Instruction: 9: 10011111000iiiiiPP100tti1--ddddd | if (Pt) Rd = memb (#u6) + hi->instruction = HEX_INS_IF__PT__RD___MEMB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = memb (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf002880) { + // Instruction: 9: 10011111000iiiiiPP101tti1--ddddd | if !Pt Rd = memb (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = memb (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf003080) { + // Instruction: 9: 10011111000iiiiiPP110tti1--ddddd | if (Pt.new) Rd = memb (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = memb (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf003880) { + // Instruction: 9: 10011111000iiiiiPP111tti1--ddddd | if !Pt.new Rd = memb (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = memb (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x800000) { + // Instruction: 9: 10010ii0100sssssPPiiiiiiiiiyyyyy | Ryy = memb_fifo (Rs + #s11:0) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RS____S11_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8800000) { + // Instruction: 9: 10011000100xxxxxPPu0--0iiiiyyyyy | Ryy = memb_fifo (Rx ++ #s4:0:circ (Mu)) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RX_____S4_0_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8800200) { + // Instruction: 9: 10011000100xxxxxPPu0--1-0--yyyyy | Ryy = memb_fifo (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d ++ I:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa801000) { + // Instruction: 9: 10011010100eeeeePP01IIII-IIyyyyy | Ryy = memb_fifo (Re = #U6) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d = 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa800000) { + // Instruction: 9: 10011010100xxxxxPP00---iiiiyyyyy | Ryy = memb_fifo (Rx ++ #s4:0) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RX_____S4_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d ++ 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xc801000) { + // Instruction: 9: 10011100100tttttPPi1IIIIiIIyyyyy | Ryy = memb_fifo (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xc800000) { + // Instruction: 9: 10011100100xxxxxPPu0----0--yyyyy | Ryy = memb_fifo (Rx ++ Mu) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d ++ R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xe800000) { + // Instruction: 9: 10011110100xxxxxPPu0----0--yyyyy | Ryy = memb_fifo (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RYY___MEMB_FIFO__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memb_fifo (R%d ++ R%d:brev)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x400000) { + // Instruction: 9: 10010ii0010sssssPPiiiiiiiiiyyyyy | Ryy = memh_fifo (Rs + #s11:1) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RS____S11_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8400000) { + // Instruction: 9: 10011000010xxxxxPPu0--0iiiiyyyyy | Ryy = memh_fifo (Rx ++ #s4:1:circ (Mu)) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RX_____S4_1_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8400200) { + // Instruction: 9: 10011000010xxxxxPPu0--1-0--yyyyy | Ryy = memh_fifo (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d ++ I:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa401000) { + // Instruction: 9: 10011010010eeeeePP01IIII-IIyyyyy | Ryy = memh_fifo (Re = #U6) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d = 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa400000) { + // Instruction: 9: 10011010010xxxxxPP00---iiiiyyyyy | Ryy = memh_fifo (Rx ++ #s4:1) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RX_____S4_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d ++ 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xc401000) { + // Instruction: 9: 10011100010tttttPPi1IIIIiIIyyyyy | Ryy = memh_fifo (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xc400000) { + // Instruction: 9: 10011100010xxxxxPPu0----0--yyyyy | Ryy = memh_fifo (Rx ++ Mu) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d ++ R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xe400000) { + // Instruction: 9: 10011110010xxxxxPPu0----0--yyyyy | Ryy = memh_fifo (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RYY___MEMH_FIFO__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memh_fifo (R%d ++ R%d:brev)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1400000) { + // Instruction: 9: 10010ii1010sssssPPiiiiiiiiiddddd | Rd = memh (Rs + #s11:1) + hi->instruction = HEX_INS_RD___MEMH__RS____S11_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "R%d = memh (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9400000) { + // Instruction: 9: 10011001010xxxxxPPu0--0iiiiddddd | Rd = memh (Rx ++ #s4:1:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMH__RX_____S4_1_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9400200) { + // Instruction: 9: 10011001010xxxxxPPu0--1-0--ddddd | Rd = memh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb401000) { + // Instruction: 9: 10011011010eeeeePP01IIII-IIddddd | Rd = memh (Re = #U6) + hi->instruction = HEX_INS_RD___MEMH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memh (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb400000) { + // Instruction: 9: 10011011010xxxxxPP00---iiiiddddd | Rd = memh (Rx ++ #s4:1) + hi->instruction = HEX_INS_RD___MEMH__RX_____S4_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xd401000) { + // Instruction: 9: 10011101010tttttPPi1IIIIiIIddddd | Rd = memh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xd400000) { + // Instruction: 9: 10011101010xxxxxPPu0----0--ddddd | Rd = memh (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xf400000) { + // Instruction: 9: 10011111010xxxxxPPu0----0--ddddd | Rd = memh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memh (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb402000) { + // Instruction: 9: 10011011010xxxxxPP100ttiiiiddddd | if (Pt) Pd = memh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__PT__PD___MEMH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) P%d = memh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.pred, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb402800) { + // Instruction: 9: 10011011010xxxxxPP101ttiiiiddddd | if !Pt Rd = memh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d = memh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb403000) { + // Instruction: 9: 10011011010xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb403800) { + // Instruction: 9: 10011011010xxxxxPP111ttiiiiddddd | if !Pt.new Rd = memh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d = memh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf402080) { + // Instruction: 9: 10011111010iiiiiPP100tti1--ddddd | if (Pt) Rd = memh (#u6) + hi->instruction = HEX_INS_IF__PT__RD___MEMH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = memh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf402880) { + // Instruction: 9: 10011111010iiiiiPP101tti1--ddddd | if !Pt Rd = memh (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = memh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf403080) { + // Instruction: 9: 10011111010iiiiiPP110tti1--ddddd | if (Pt.new) Rd = memh (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = memh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf403880) { + // Instruction: 9: 10011111010iiiiiPP111tti1--ddddd | if !Pt.new Rd = memh (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = memh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1200000) { + // Instruction: 9: 10010ii1001sssssPPiiiiiiiiiddddd | Rd = memub (Rs + #s11:0) + hi->instruction = HEX_INS_RD___MEMUB__RS____S11_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memub (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9200000) { + // Instruction: 9: 10011001001xxxxxPPu0--0iiiiddddd | Rd = memub (Rx ++ #s4:0:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUB__RX_____S4_0_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9200200) { + // Instruction: 9: 10011001001xxxxxPPu0--1-0--ddddd | Rd = memub (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUB__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb201000) { + // Instruction: 9: 10011011001eeeeePP01IIII-IIddddd | Rd = memub (Re = #U6) + hi->instruction = HEX_INS_RD___MEMUB__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memub (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb200000) { + // Instruction: 9: 10011011001xxxxxPP00---iiiiddddd | Rd = memub (Rx ++ #s4:0) + hi->instruction = HEX_INS_RD___MEMUB__RX_____S4_0_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xd201000) { + // Instruction: 9: 10011101001tttttPPi1IIIIiIIddddd | Rd = memub (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMUB__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memub (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xd200000) { + // Instruction: 9: 10011101001xxxxxPPu0----0--ddddd | Rd = memub (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMUB__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xf200000) { + // Instruction: 9: 10011111001xxxxxPPu0----0--ddddd | Rd = memub (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMUB__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memub (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb202000) { + // Instruction: 9: 10011011001xxxxxPP100ttiiiiddddd | if (Pt) Rd = memub (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__PT__RD___MEMUB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) R%d = memub (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb202800) { + // Instruction: 9: 10011011001xxxxxPP101ttiiiiddddd | if !Pt Rd = memub (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d = memub (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb203000) { + // Instruction: 9: 10011011001xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memub (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memub (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb203800) { + // Instruction: 9: 10011011001xxxxxPP111ttiiiiddddd | if !Pt.new Rd = memub (Rx ++ #s4:0) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUB__RX_____S4_0_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d = memub (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf202080) { + // Instruction: 9: 10011111001iiiiiPP100tti1--ddddd | if (Pt) Rd = memub (#u6) + hi->instruction = HEX_INS_IF__PT__RD___MEMUB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = memub (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf202880) { + // Instruction: 9: 10011111001iiiiiPP101tti1--ddddd | if !Pt Rd = memub (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = memub (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf203080) { + // Instruction: 9: 10011111001iiiiiPP110tti1--ddddd | if (Pt.new) Rd = memub (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = memub (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf203880) { + // Instruction: 9: 10011111001iiiiiPP111tti1--ddddd | if !Pt.new Rd = memub (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUB___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = memub (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1600000) { + // Instruction: 9: 10010ii1011sssssPPiiiiiiiiiddddd | Rd = memuh (Rs + #s11:1) + hi->instruction = HEX_INS_RD___MEMUH__RS____S11_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 1); + sprintf(hi->mnem, "R%d = memuh (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9600000) { + // Instruction: 9: 10011001011xxxxxPPu0--0iiiiddddd | Rd = memuh (Rx ++ #s4:1:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUH__RX_____S4_1_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9600200) { + // Instruction: 9: 10011001011xxxxxPPu0--1-0--ddddd | Rd = memuh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb601000) { + // Instruction: 9: 10011011011eeeeePP01IIII-IIddddd | Rd = memuh (Re = #U6) + hi->instruction = HEX_INS_RD___MEMUH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memuh (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb600000) { + // Instruction: 9: 10011011011xxxxxPP00---iiiiddddd | Rd = memuh (Rx ++ #s4:1) + hi->instruction = HEX_INS_RD___MEMUH__RX_____S4_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xd601000) { + // Instruction: 9: 10011101011tttttPPi1IIIIiIIddddd | Rd = memuh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMUH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memuh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xd600000) { + // Instruction: 9: 10011101011xxxxxPPu0----0--ddddd | Rd = memuh (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMUH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xf600000) { + // Instruction: 9: 10011111011xxxxxPPu0----0--ddddd | Rd = memuh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMUH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memuh (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb602000) { + // Instruction: 9: 10011011011xxxxxPP100ttiiiiddddd | if (Pt) Rd = memuh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__PT__RD___MEMUH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) R%d = memuh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb602800) { + // Instruction: 9: 10011011011xxxxxPP101ttiiiiddddd | if !Pt Rd = memuh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d = memuh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb603000) { + // Instruction: 9: 10011011011xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memuh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memuh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb603800) { + // Instruction: 9: 10011011011xxxxxPP111ttiiiiddddd | if !Pt.new Rd = memuh (Rx ++ #s4:1) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUH__RX_____S4_1_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d = memuh (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf602080) { + // Instruction: 9: 10011111011iiiiiPP100tti1--ddddd | if (Pt) Rd = memuh (#u6) + hi->instruction = HEX_INS_IF__PT__RD___MEMUH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = memuh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf602880) { + // Instruction: 9: 10011111011iiiiiPP101tti1--ddddd | if !Pt Rd = memuh (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMUH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = memuh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf603080) { + // Instruction: 9: 10011111011iiiiiPP110tti1--ddddd | if (Pt.new) Rd = memuh (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMUH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = memuh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf603880) { + // Instruction: 9: 10011111011iiiiiPP111tti1--ddddd | if !Pt.new Rd = memuh (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMUH___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = memuh (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1800000) { + // Instruction: 9: 10010ii1100sssssPPiiiiiiiiiddddd | Rd = memw (Rs + #s11:2) + hi->instruction = HEX_INS_RD___MEMW__RS____S11_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[2], 2); + sprintf(hi->mnem, "R%d = memw (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x9800000) { + // Instruction: 9: 10011001100xxxxxPPu0--0iiiiddddd | Rd = memw (Rx ++ #s4:2:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMW__RX_____S4_2_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x9800200) { + // Instruction: 9: 10011001100xxxxxPPu0--1-0--ddddd | Rd = memw (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMW__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb801000) { + // Instruction: 9: 10011011100eeeeePP01IIII-IIddddd | Rd = memw (Re = #U6) + hi->instruction = HEX_INS_RD___MEMW__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memw (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xb800000) { + // Instruction: 9: 10011011100xxxxxPP00---iiiiddddd | Rd = memw (Rx ++ #s4:2) + hi->instruction = HEX_INS_RD___MEMW__RX_____S4_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xd801000) { + // Instruction: 9: 10011101100tttttPPi1IIIIiIIddddd | Rd = memw (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMW__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = memw (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xd800000) { + // Instruction: 9: 10011101100xxxxxPPu0----0--ddddd | Rd = memw (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMW__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xf800000) { + // Instruction: 9: 10011111100xxxxxPPu0----0--ddddd | Rd = memw (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMW__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb802000) { + // Instruction: 9: 10011011100xxxxxPP100ttiiiiddddd | if (Pt) Rd = memw (Rx ++ #s4:2) + hi->instruction = HEX_INS_IF__PT__RD___MEMW__RX_____S4_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE; // if (Pt) + sprintf(hi->mnem, "if (P%d) R%d = memw (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb802800) { + // Instruction: 9: 10011011100xxxxxPP101ttiiiiddddd | if !Pt Rd = memw (Rx ++ #s4:2) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMW__RX_____S4_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE; // if !Pt + sprintf(hi->mnem, "if !P%d R%d = memw (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb803000) { + // Instruction: 9: 10011011100xxxxxPP110ttiiiiddddd | if (Pt.new) Rd = memw (Rx ++ #s4:2) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMW__RX_____S4_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + sprintf(hi->mnem, "if (P%d.new) R%d = memw (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03800) == 0xb803800) { + // Instruction: 9: 10011011100xxxxxPP111ttiiiiddddd | if !Pt.new Rd = memw (Rx ++ #s4:2) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMW__RX_____S4_2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + sprintf(hi->mnem, "if !P%d.new R%d = memw (R%d ++ 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf802080) { + // Instruction: 9: 10011111100iiiiiPP100tti1--ddddd | if (Pt) Rd = memw (#u6) + hi->instruction = HEX_INS_IF__PT__RD___MEMW___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE; // if (Pt) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d) R%d = memw (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf802880) { + // Instruction: 9: 10011111100iiiiiPP101tti1--ddddd | if !Pt Rd = memw (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_RD___MEMW___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE; // if !Pt + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d R%d = memw (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf803080) { + // Instruction: 9: 10011111100iiiiiPP110tti1--ddddd | if (Pt.new) Rd = memw (#u6) + hi->instruction = HEX_INS_IF__PT_NEW__RD___MEMW___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pt.new) + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if (P%d.new) R%d = memw (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03880) == 0xf803880) { + // Instruction: 9: 10011111100iiiiiPP111tti1--ddddd | if !Pt.new Rd = memw (#u6) + hi->instruction = HEX_INS_IF__NOT_PT_NEW_RD___MEMW___U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x600) >> 9); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x100) >> 8)); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pt.new + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "if !P%d.new R%d = memw (0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfff201f) == 0x1e001e) { + // Instruction: 9: 1001000000011110PP0--------11110 | deallocframe + hi->instruction = HEX_INS_DEALLOCFRAME; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "deallocframe"); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e001e) { + // Instruction: 9: 1001011000011110PP0000-----11110 | dealloc_return + hi->instruction = HEX_INS_DEALLOC_RETURN; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dealloc_return"); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e081e) { + // Instruction: 9: 1001011000011110PP0010ss---11110 | if (Ps.new) dealloc_return:nt + hi->instruction = HEX_INS_IF__PS_NEW__DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (P%d.new) dealloc_return:nt", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e101e) { + // Instruction: 9: 1001011000011110PP0100ss---11110 | if (Ps) dealloc_return + hi->instruction = HEX_INS_IF__PS__DEALLOC_RETURN; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (P%d) dealloc_return", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e181e) { + // Instruction: 9: 1001011000011110PP0110ss---11110 | if (Ps.new) dealloc_return:t + hi->instruction = HEX_INS_IF__PS_NEW__DEALLOC_RETURN_T; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if (P%d.new) dealloc_return:t", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e281e) { + // Instruction: 9: 1001011000011110PP1010ss---11110 | if !Ps.new dealloc_return:nt + hi->instruction = HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_NT; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if !P%d.new dealloc_return:nt", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e301e) { + // Instruction: 9: 1001011000011110PP1100ss---11110 | if !Ps dealloc_return + hi->instruction = HEX_INS_IF__NOT_PS_DEALLOC_RETURN; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if !P%d dealloc_return", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0xfff3c1f) == 0x61e381e) { + // Instruction: 9: 1001011000011110PP1110ss---11110 | if !Ps.new dealloc_return:t + hi->instruction = HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_T; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x300) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "if !P%d.new dealloc_return:t", hi->ops[0].op.pred); + break; + } + if ((hi_u32 & 0x9e00000) == 0x200000) { + // Instruction: 9: 10010ii0001sssssPPiiiiiiiiiddddd | Rd = membh (Rs + #s11:1) + hi->instruction = HEX_INS_RD___MEMBH__RS____S11_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0x600000) { + // Instruction: 9: 10010ii0011sssssPPiiiiiiiiiddddd | Rd = memubh (Rs + #s11:1) + hi->instruction = HEX_INS_RD___MEMUBH__RS____S11_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0xa00000) { + // Instruction: 9: 10010ii0101sssssPPiiiiiiiiiddddd | Rdd = memubh (Rs + #s11:2) + hi->instruction = HEX_INS_RDD___MEMUBH__RS____S11_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0x9e00000) == 0xe00000) { + // Instruction: 9: 10010ii0111sssssPPiiiiiiiiiddddd | Rdd = membh (Rs + #s11:2) + hi->instruction = HEX_INS_RDD___MEMBH__RS____S11_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x3fe0) >> 5)) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8200000) { + // Instruction: 9: 10011000001xxxxxPPu0--0iiiiddddd | Rd = membh (Rx ++ #s4:1:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMBH__RX_____S4_1_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8200200) { + // Instruction: 9: 10011000001xxxxxPPu0--1-0--ddddd | Rd = membh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMBH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8600000) { + // Instruction: 9: 10011000011xxxxxPPu0--0iiiiddddd | Rd = memubh (Rx ++ #s4:1:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUBH__RX_____S4_1_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8600200) { + // Instruction: 9: 10011000011xxxxxPPu0--1-0--ddddd | Rd = memubh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RD___MEMUBH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8a00000) { + // Instruction: 9: 10011000101xxxxxPPu0--0iiiiddddd | Rdd = memubh (Rx ++ #s4:2:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMUBH__RX_____S4_2_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8a00200) { + // Instruction: 9: 10011000101xxxxxPPu0--1-0--ddddd | Rdd = memubh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMUBH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01200) == 0x8e00000) { + // Instruction: 9: 10011000111xxxxxPPu0--0iiiiddddd | Rdd = membh (Rx ++ #s4:2:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMBH__RX_____S4_2_CIRC__MU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d ++ 0x%x:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01280) == 0x8e00200) { + // Instruction: 9: 10011000111xxxxxPPu0--1-0--ddddd | Rdd = membh (Rx ++ I:circ (Mu)) + hi->instruction = HEX_INS_RDD___MEMBH__RX____I_CIRC__MU__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d ++ I:circ (R%d))", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa201000) { + // Instruction: 9: 10011010001eeeeePP01IIII-IIddddd | Rd = membh (Re = #U6) + hi->instruction = HEX_INS_RD___MEMBH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa200000) { + // Instruction: 9: 10011010001xxxxxPP00---iiiiddddd | Rd = membh (Rx ++ #s4:1) + hi->instruction = HEX_INS_RD___MEMBH__RX_____S4_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa601000) { + // Instruction: 9: 10011010011eeeeePP01IIII-IIddddd | Rd = memubh (Re = #U6) + hi->instruction = HEX_INS_RD___MEMUBH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d = 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xa600000) { + // Instruction: 9: 10011010011xxxxxPP00---iiiiddddd | Rd = memubh (Rx ++ #s4:1) + hi->instruction = HEX_INS_RD___MEMUBH__RX_____S4_1_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d ++ 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xaa01000) { + // Instruction: 9: 10011010101eeeeePP01IIII-IIddddd | Rdd = memubh (Re = #U6) + hi->instruction = HEX_INS_RDD___MEMUBH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d = 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xaa00000) { + // Instruction: 9: 10011010101xxxxxPP00---iiiiddddd | Rdd = memubh (Rx ++ #s4:2) + hi->instruction = HEX_INS_RDD___MEMUBH__RX_____S4_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d ++ 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xae01000) { + // Instruction: 9: 10011010111eeeeePP01IIII-IIddddd | Rdd = membh (Re = #U6) + hi->instruction = HEX_INS_RDD___MEMBH__RE____U6_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d = 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe03000) == 0xae00000) { + // Instruction: 9: 10011010111xxxxxPP00---iiiiddddd | Rdd = membh (Rx ++ #s4:2) + hi->instruction = HEX_INS_RDD___MEMBH__RX_____S4_2_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1e0) >> 5) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d ++ 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01000) == 0xc201000) { + // Instruction: 9: 10011100001tttttPPi1IIIIiIIddddd | Rd = membh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMBH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xc200000) { + // Instruction: 9: 10011100001xxxxxPPu0----0--ddddd | Rd = membh (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMBH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01000) == 0xc601000) { + // Instruction: 9: 10011100011tttttPPi1IIIIiIIddddd | Rd = memubh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RD___MEMUBH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xc600000) { + // Instruction: 9: 10011100011xxxxxPPu0----0--ddddd | Rd = memubh (Rx ++ Mu) + hi->instruction = HEX_INS_RD___MEMUBH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d ++ R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01000) == 0xca01000) { + // Instruction: 9: 10011100101tttttPPi1IIIIiIIddddd | Rdd = memubh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RDD___MEMUBH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xca00000) { + // Instruction: 9: 10011100101xxxxxPPu0----0--ddddd | Rdd = memubh (Rx ++ Mu) + hi->instruction = HEX_INS_RDD___MEMUBH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d ++ R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01000) == 0xce01000) { + // Instruction: 9: 10011100111tttttPPi1IIIIiIIddddd | Rdd = membh (Rt << #u2 + #U6) + hi->instruction = HEX_INS_RDD___MEMBH__RT_____U2____U6_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rt + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x80) >> 7)); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0xf00) >> 8) | ((hi_u32 & 0x60) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d << 0x%x + 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe01080) == 0xce00000) { + // Instruction: 9: 10011100111xxxxxPPu0----0--ddddd | Rdd = membh (Rx ++ Mu) + hi->instruction = HEX_INS_RDD___MEMBH__RX____MU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d ++ R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xe200000) { + // Instruction: 9: 10011110001xxxxxPPu0----0--ddddd | Rd = membh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMBH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = membh (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xe600000) { + // Instruction: 9: 10011110011xxxxxPPu0----0--ddddd | Rd = memubh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RD___MEMUBH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memubh (R%d ++ R%d:brev)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xea00000) { + // Instruction: 9: 10011110101xxxxxPPu0----0--ddddd | Rdd = memubh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RDD___MEMUBH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memubh (R%d ++ R%d:brev)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01080) == 0xee00000) { + // Instruction: 9: 10011110111xxxxxPPu0----0--ddddd | Rdd = membh (Rx ++ Mu:brev) + hi->instruction = HEX_INS_RDD___MEMBH__RX____MU_BREV_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = membh (R%d ++ R%d:brev)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02020) == 0x2002000) { + // Instruction: 9: 10010010000sssssPP1ttttt--0ddddd | Rd = memw_phys (Rs, Rt) + hi->instruction = HEX_INS_RD___MEMW_PHYS__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw_phys (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03020) == 0x2000000) { + // Instruction: 9: 10010010000sssssPP00------0ddddd | Rd = memw_locked (Rs) + hi->instruction = HEX_INS_RD___MEMW_LOCKED__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = memw_locked (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe03020) == 0x2001000) { + // Instruction: 9: 10010010000sssssPP01------0ddddd | Rdd = memd_locked (Rs) + hi->instruction = HEX_INS_RDD___MEMD_LOCKED__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = memd_locked (R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0x4000000) { + // Instruction: 9: 10010100000sssssPP0--iiiiiiiiiii | dcfetch (Rs + #u11:3) + hi->instruction = HEX_INS_DCFETCH__RS____U11_3_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x7ff) >> 0) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dcfetch (R%d + 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + break; + } + case 0xa: { + if ((hi_u32 & 0x9e01800) == 0x1a00000) { + // Instruction: 10: 10100ii1101sssssPPi00tttiiiiiiii | memb (Rs + #s11:0) = Nt.new + hi->instruction = HEX_INS_MEMB__RS____S11_0____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memb (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a00002) { + // Instruction: 10: 10101001101xxxxxPPu00ttt0-----1- | memb (Rx ++ I:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMB__RX____I_CIRC__MU_____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a00000) { + // Instruction: 10: 10101001101xxxxxPPu00ttt0iiii-0- | memb (Rx ++ #s4:0:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMB__RX_____S4_0_CIRC__MU_____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03880) == 0xba00080) { + // Instruction: 10: 10101011101eeeeePP000ttt1-IIIIII | memb (Re = #U6) = Nt.new + hi->instruction = HEX_INS_MEMB__RE____U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03882) == 0xba00000) { + // Instruction: 10: 10101011101xxxxxPP000ttt0iiii-0- | memb (Rx ++ #s4:0) = Nt.new + hi->instruction = HEX_INS_MEMB__RX_____S4_0____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda00080) { + // Instruction: 10: 10101101101uuuuuPPi00ttt1iIIIIII | memb (Ru << #u2 + #U6) = Nt.new + hi->instruction = HEX_INS_MEMB__RU_____U2____U6____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memb (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda00000) { + // Instruction: 10: 10101101101xxxxxPPu00ttt0------- | memb (Rx ++ Mu) = Nt.new + hi->instruction = HEX_INS_MEMB__RX____MU____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xfa00000) { + // Instruction: 10: 10101111101xxxxxPPu00ttt0------- | memb (Rx ++ Mu:brev) = Nt.new + hi->instruction = HEX_INS_MEMB__RX____MU_BREV____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02000) { + // Instruction: 10: 10101011101xxxxxPP100ttt0iiii0vv | if (Pv) memb (Rx ++ #s4:0) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMB__RX_____S4_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02004) { + // Instruction: 10: 10101011101xxxxxPP100ttt0iiii1vv | if !Pv memb (Rx ++ #s4:0) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RX_____S4_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02080) { + // Instruction: 10: 10101011101xxxxxPP100ttt1iiii0vv | if (Pv.new) memb (Rx ++ #s4:0) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RX_____S4_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02084) { + // Instruction: 10: 10101011101xxxxxPP100ttt1iiii1vv | if !Pv.new memb (Rx ++ #s4:0) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RX_____S4_0____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa00080) { + // Instruction: 10: 10101111101---iiPP000ttt1iiii0vv | if (Pv) memb (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMB___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa00084) { + // Instruction: 10: 10101111101---iiPP000ttt1iiii1vv | if !Pv memb (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMB___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa02080) { + // Instruction: 10: 10101111101---iiPP100ttt1iiii0vv | if (Pv.new) memb (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMB___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa02084) { + // Instruction: 10: 10101111101---iiPP100ttt1iiii1vv | if !Pv.new memb (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e01800) == 0x1a00800) { + // Instruction: 10: 10100ii1101sssssPPi01tttiiiiiiii | memh (Rs + #s11:1) = Nt.new + hi->instruction = HEX_INS_MEMH__RS____S11_1____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[1], 1); + sprintf(hi->mnem, "memh (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a00802) { + // Instruction: 10: 10101001101xxxxxPPu01ttt0-----1- | memh (Rx ++ I:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMH__RX____I_CIRC__MU_____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a00800) { + // Instruction: 10: 10101001101xxxxxPPu01ttt0iiii-0- | memh (Rx ++ #s4:1:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03880) == 0xba00880) { + // Instruction: 10: 10101011101eeeeePP001ttt1-IIIIII | memh (Re = #U6) = Nt.new + hi->instruction = HEX_INS_MEMH__RE____U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03882) == 0xba00800) { + // Instruction: 10: 10101011101xxxxxPP001ttt0iiii-0- | memh (Rx ++ #s4:1) = Nt.new + hi->instruction = HEX_INS_MEMH__RX_____S4_1____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda00880) { + // Instruction: 10: 10101101101uuuuuPPi01ttt1iIIIIII | memh (Ru << #u2 + #U6) = Nt.new + hi->instruction = HEX_INS_MEMH__RU_____U2____U6____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memh (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda00800) { + // Instruction: 10: 10101101101xxxxxPPu01ttt0------- | memh (Rx ++ Mu) = Nt.new + hi->instruction = HEX_INS_MEMH__RX____MU____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xfa00800) { + // Instruction: 10: 10101111101xxxxxPPu01ttt0------- | memh (Rx ++ Mu:brev) = Nt.new + hi->instruction = HEX_INS_MEMH__RX____MU_BREV____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02800) { + // Instruction: 10: 10101011101xxxxxPP101ttt0iiii0vv | if (Pv) memh (Rx ++ #s4:1) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMH__RX_____S4_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02804) { + // Instruction: 10: 10101011101xxxxxPP101ttt0iiii1vv | if !Pv memh (Rx ++ #s4:1) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02880) { + // Instruction: 10: 10101011101xxxxxPP101ttt1iiii0vv | if (Pv.new) memh (Rx ++ #s4:1) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba02884) { + // Instruction: 10: 10101011101xxxxxPP101ttt1iiii1vv | if !Pv.new memh (Rx ++ #s4:1) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa00880) { + // Instruction: 10: 10101111101---iiPP001ttt1iiii0vv | if (Pv) memh (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMH___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa00884) { + // Instruction: 10: 10101111101---iiPP001ttt1iiii1vv | if !Pv memh (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMH___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa02880) { + // Instruction: 10: 10101111101---iiPP101ttt1iiii0vv | if (Pv.new) memh (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMH___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa02884) { + // Instruction: 10: 10101111101---iiPP101ttt1iiii1vv | if !Pv.new memh (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e01800) == 0x1a01000) { + // Instruction: 10: 10100ii1101sssssPPi10tttiiiiiiii | memw (Rs + #s11:2) = Nt.new + hi->instruction = HEX_INS_MEMW__RS____S11_2____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[1], 2); + sprintf(hi->mnem, "memw (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a01002) { + // Instruction: 10: 10101001101xxxxxPPu10ttt0-----1- | memw (Rx ++ I:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMW__RX____I_CIRC__MU_____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01882) == 0x9a01000) { + // Instruction: 10: 10101001101xxxxxPPu10ttt0iiii-0- | memw (Rx ++ #s4:2:circ (Mu)) = Nt.new + hi->instruction = HEX_INS_MEMW__RX_____S4_2_CIRC__MU_____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03880) == 0xba01080) { + // Instruction: 10: 10101011101eeeeePP010ttt1-IIIIII | memw (Re = #U6) = Nt.new + hi->instruction = HEX_INS_MEMW__RE____U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03882) == 0xba01000) { + // Instruction: 10: 10101011101xxxxxPP010ttt0iiii-0- | memw (Rx ++ #s4:2) = Nt.new + hi->instruction = HEX_INS_MEMW__RX_____S4_2____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda01080) { + // Instruction: 10: 10101101101uuuuuPPi10ttt1iIIIIII | memw (Ru << #u2 + #U6) = Nt.new + hi->instruction = HEX_INS_MEMW__RU_____U2____U6____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memw (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xda01000) { + // Instruction: 10: 10101101101xxxxxPPu10ttt0------- | memw (Rx ++ Mu) = Nt.new + hi->instruction = HEX_INS_MEMW__RX____MU____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01880) == 0xfa01000) { + // Instruction: 10: 10101111101xxxxxPPu10ttt0------- | memw (Rx ++ Mu:brev) = Nt.new + hi->instruction = HEX_INS_MEMW__RX____MU_BREV____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba03000) { + // Instruction: 10: 10101011101xxxxxPP110ttt0iiii0vv | if (Pv) memw (Rx ++ #s4:2) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMW__RX_____S4_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba03004) { + // Instruction: 10: 10101011101xxxxxPP110ttt0iiii1vv | if !Pv memw (Rx ++ #s4:2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RX_____S4_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba03080) { + // Instruction: 10: 10101011101xxxxxPP110ttt1iiii0vv | if (Pv.new) memw (Rx ++ #s4:2) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RX_____S4_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xba03084) { + // Instruction: 10: 10101011101xxxxxPP110ttt1iiii1vv | if !Pv.new memw (Rx ++ #s4:2) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RX_____S4_2____NT_NEW; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa01080) { + // Instruction: 10: 10101111101---iiPP010ttt1iiii0vv | if (Pv) memw (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV__MEMW___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa01084) { + // Instruction: 10: 10101111101---iiPP010ttt1iiii1vv | if !Pv memw (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_MEMW___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa03080) { + // Instruction: 10: 10101111101---iiPP110ttt1iiii0vv | if (Pv.new) memw (#u6) = Nt.new + hi->instruction = HEX_INS_IF__PV_NEW__MEMW___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe03884) == 0xfa03084) { + // Instruction: 10: 10101111101---iiPP110ttt1iiii1vv | if !Pv.new memw (#u6) = Nt.new + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW___U6____NT_NEW; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x700) >> 8); // Nt.new + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1c00000) { + // Instruction: 10: 10100ii1110sssssPPitttttiiiiiiii | memd (Rs + #s11:3) = Rtt + hi->instruction = HEX_INS_MEMD__RS____S11_3____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[1], 3); + sprintf(hi->mnem, "memd (R%d + 0x%x) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9c00002) { + // Instruction: 10: 10101001110xxxxxPPuttttt0-----1- | memd (Rx ++ I:circ (Mu)) = Rtt + hi->instruction = HEX_INS_MEMD__RX____I_CIRC__MU_____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d ++ I:circ (R%d)) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9c00000) { + // Instruction: 10: 10101001110xxxxxPPuttttt0iiii-0- | memd (Rx ++ #s4:3:circ (Mu)) = Rtt + hi->instruction = HEX_INS_MEMD__RX_____S4_3_CIRC__MU_____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d ++ 0x%x:circ (R%d)) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xbc00080) { + // Instruction: 10: 10101011110eeeeePP0ttttt1-IIIIII | memd (Re = #U6) = Rtt + hi->instruction = HEX_INS_MEMD__RE____U6____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memd (R%d = 0x%x) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02082) == 0xbc00000) { + // Instruction: 10: 10101011110xxxxxPP0ttttt0iiii-0- | memd (Rx ++ #s4:3) = Rtt + hi->instruction = HEX_INS_MEMD__RX_____S4_3____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d ++ 0x%x) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xdc00080) { + // Instruction: 10: 10101101110uuuuuPPittttt1iIIIIII | memd (Ru << #u2 + #U6) = Rtt + hi->instruction = HEX_INS_MEMD__RU_____U2____U6____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memd (R%d << 0x%x + 0x%x) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xdc00000) { + // Instruction: 10: 10101101110xxxxxPPuttttt0------- | memd (Rx ++ Mu) = Rtt + hi->instruction = HEX_INS_MEMD__RX____MU____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d ++ R%d) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xfc00000) { + // Instruction: 10: 10101111110xxxxxPPuttttt0------- | memd (Rx ++ Mu:brev) = Rtt + hi->instruction = HEX_INS_MEMD__RX____MU_BREV____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd (R%d ++ R%d:brev) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xbc02000) { + // Instruction: 10: 10101011110xxxxxPP1ttttt0iiii0vv | if (Pv) memd (Rx ++ #s4:3) = Rtt + hi->instruction = HEX_INS_IF__PV__MEMD__RX_____S4_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memd (R%d ++ 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xbc02004) { + // Instruction: 10: 10101011110xxxxxPP1ttttt0iiii1vv | if !Pv memd (Rx ++ #s4:3) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_MEMD__RX_____S4_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memd (R%d ++ 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xbc02080) { + // Instruction: 10: 10101011110xxxxxPP1ttttt1iiii0vv | if (Pv.new) memd (Rx ++ #s4:3) = Rtt + hi->instruction = HEX_INS_IF__PV_NEW__MEMD__RX_____S4_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memd (R%d ++ 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xbc02084) { + // Instruction: 10: 10101011110xxxxxPP1ttttt1iiii1vv | if !Pv.new memd (Rx ++ #s4:3) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMD__RX_____S4_3____RTT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 3; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memd (R%d ++ 0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xfc00080) { + // Instruction: 10: 10101111110---iiPP0ttttt1iiii0vv | if (Pv) memd (#u6) = Rtt + hi->instruction = HEX_INS_IF__PV__MEMD___U6____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memd (0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xfc00084) { + // Instruction: 10: 10101111110---iiPP0ttttt1iiii1vv | if !Pv memd (#u6) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_MEMD___U6____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memd (0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xfc02080) { + // Instruction: 10: 10101111110---iiPP1ttttt1iiii0vv | if (Pv.new) memd (#u6) = Rtt + hi->instruction = HEX_INS_IF__PV_NEW__MEMD___U6____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memd (0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xfc02084) { + // Instruction: 10: 10101111110---iiPP1ttttt1iiii1vv | if !Pv.new memd (#u6) = Rtt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMD___U6____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memd (0x%x) = R%d:R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1000000) { + // Instruction: 10: 10100ii1000sssssPPitttttiiiiiiii | memb (Rs + #s11:0) = Rt + hi->instruction = HEX_INS_MEMB__RS____S11_0____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memb (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9000002) { + // Instruction: 10: 10101001000xxxxxPPuttttt0-----1- | memb (Rx ++ I:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMB__RX____I_CIRC__MU_____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9000000) { + // Instruction: 10: 10101001000xxxxxPPuttttt0iiii-0- | memb (Rx ++ #s4:0:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMB__RX_____S4_0_CIRC__MU_____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xb000080) { + // Instruction: 10: 10101011000eeeeePP0ttttt1-IIIIII | memb (Re = #U6) = Rt + hi->instruction = HEX_INS_MEMB__RE____U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memb (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02082) == 0xb000000) { + // Instruction: 10: 10101011000xxxxxPP0ttttt0iiii-0- | memb (Rx ++ #s4:0) = Rt + hi->instruction = HEX_INS_MEMB__RX_____S4_0____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd000080) { + // Instruction: 10: 10101101000uuuuuPPittttt1iIIIIII | memb (Ru << #u2 + #U6) = Rt + hi->instruction = HEX_INS_MEMB__RU_____U2____U6____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memb (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd000000) { + // Instruction: 10: 10101101000xxxxxPPuttttt0------- | memb (Rx ++ Mu) = Rt + hi->instruction = HEX_INS_MEMB__RX____MU____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xf000000) { + // Instruction: 10: 10101111000xxxxxPPuttttt0------- | memb (Rx ++ Mu:brev) = Rt + hi->instruction = HEX_INS_MEMB__RX____MU_BREV____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memb (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb002000) { + // Instruction: 10: 10101011000xxxxxPP1ttttt0iiii0vv | if (Pv) memb (Rx ++ #s4:0) = Rt + hi->instruction = HEX_INS_IF__PV__MEMB__RX_____S4_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb002004) { + // Instruction: 10: 10101011000xxxxxPP1ttttt0iiii1vv | if !Pv memb (Rx ++ #s4:0) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMB__RX_____S4_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb002080) { + // Instruction: 10: 10101011000xxxxxPP1ttttt1iiii0vv | if (Pv.new) memb (Rx ++ #s4:0) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMB__RX_____S4_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb002084) { + // Instruction: 10: 10101011000xxxxxPP1ttttt1iiii1vv | if !Pv.new memb (Rx ++ #s4:0) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB__RX_____S4_0____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf000080) { + // Instruction: 10: 10101111000---iiPP0ttttt1iiii0vv | if (Pv) memb (#u6) = Rt + hi->instruction = HEX_INS_IF__PV__MEMB___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf000084) { + // Instruction: 10: 10101111000---iiPP0ttttt1iiii1vv | if !Pv memb (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMB___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf002080) { + // Instruction: 10: 10101111000---iiPP1ttttt1iiii0vv | if (Pv.new) memb (#u6) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMB___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf002084) { + // Instruction: 10: 10101111000---iiPP1ttttt1iiii1vv | if !Pv.new memb (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMB___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memb (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1400000) { + // Instruction: 10: 10100ii1010sssssPPitttttiiiiiiii | memh (Rs + #s11:1) = Rt + hi->instruction = HEX_INS_MEMH__RS____S11_1____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[1], 1); + sprintf(hi->mnem, "memh (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1600000) { + // Instruction: 10: 10100ii1011sssssPPitttttiiiiiiii | memh (Rs + #s11:1) = Rt.H + hi->instruction = HEX_INS_MEMH__RS____S11_1____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d + 0x%x) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9400002) { + // Instruction: 10: 10101001010xxxxxPPuttttt0-----1- | memh (Rx ++ I:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMH__RX____I_CIRC__MU_____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9400000) { + // Instruction: 10: 10101001010xxxxxPPuttttt0iiii-0- | memh (Rx ++ #s4:1:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9600002) { + // Instruction: 10: 10101001011xxxxxPPuttttt0-----1- | memh (Rx ++ I:circ (Mu)) = Rt.H + hi->instruction = HEX_INS_MEMH__RX____I_CIRC__MU_____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ I:circ (R%d)) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9600000) { + // Instruction: 10: 10101001011xxxxxPPuttttt0iiii-0- | memh (Rx ++ #s4:1:circ (Mu)) = Rt.H + hi->instruction = HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x:circ (R%d)) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xb400080) { + // Instruction: 10: 10101011010eeeeePP0ttttt1-IIIIII | memh (Re = #U6) = Rt + hi->instruction = HEX_INS_MEMH__RE____U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memh (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02082) == 0xb400000) { + // Instruction: 10: 10101011010xxxxxPP0ttttt0iiii-0- | memh (Rx ++ #s4:1) = Rt + hi->instruction = HEX_INS_MEMH__RX_____S4_1____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xb600080) { + // Instruction: 10: 10101011011eeeeePP0ttttt1-IIIIII | memh (Re = #U6) = Rt.H + hi->instruction = HEX_INS_MEMH__RE____U6____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d = 0x%x) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02082) == 0xb600000) { + // Instruction: 10: 10101011011xxxxxPP0ttttt0iiii-0- | memh (Rx ++ #s4:1) = Rt.H + hi->instruction = HEX_INS_MEMH__RX_____S4_1____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ 0x%x) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd400080) { + // Instruction: 10: 10101101010uuuuuPPittttt1iIIIIII | memh (Ru << #u2 + #U6) = Rt + hi->instruction = HEX_INS_MEMH__RU_____U2____U6____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memh (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd400000) { + // Instruction: 10: 10101101010xxxxxPPuttttt0------- | memh (Rx ++ Mu) = Rt + hi->instruction = HEX_INS_MEMH__RX____MU____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd600080) { + // Instruction: 10: 10101101011uuuuuPPittttt1iIIIIII | memh (Ru << #u2 + #U6) = Rt.H + hi->instruction = HEX_INS_MEMH__RU_____U2____U6____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d << 0x%x + 0x%x) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd600000) { + // Instruction: 10: 10101101011xxxxxPPuttttt0------- | memh (Rx ++ Mu) = Rt.H + hi->instruction = HEX_INS_MEMH__RX____MU____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xf400000) { + // Instruction: 10: 10101111010xxxxxPPuttttt0------- | memh (Rx ++ Mu:brev) = Rt + hi->instruction = HEX_INS_MEMH__RX____MU_BREV____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xf600000) { + // Instruction: 10: 10101111011xxxxxPPuttttt0------- | memh (Rx ++ Mu:brev) = Rt.H + hi->instruction = HEX_INS_MEMH__RX____MU_BREV____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memh (R%d ++ R%d:brev) = R%d.H", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb402000) { + // Instruction: 10: 10101011010xxxxxPP1ttttt0iiii0vv | if (Pv) memh (Rx ++ #s4:1) = Rt + hi->instruction = HEX_INS_IF__PV__MEMH__RX_____S4_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb402004) { + // Instruction: 10: 10101011010xxxxxPP1ttttt0iiii1vv | if !Pv memh (Rx ++ #s4:1) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb402080) { + // Instruction: 10: 10101011010xxxxxPP1ttttt1iiii0vv | if (Pv.new) memh (Rx ++ #s4:1) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb402084) { + // Instruction: 10: 10101011010xxxxxPP1ttttt1iiii1vv | if !Pv.new memh (Rx ++ #s4:1) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb602000) { + // Instruction: 10: 10101011011xxxxxPP1ttttt0iiii0vv | if (Pv) memh (Rx ++ #s4:1) = Rt.H + hi->instruction = HEX_INS_IF__PV__MEMH__RX_____S4_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (R%d ++ 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb602004) { + // Instruction: 10: 10101011011xxxxxPP1ttttt0iiii1vv | if !Pv memh (Rx ++ #s4:1) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (R%d ++ 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb602080) { + // Instruction: 10: 10101011011xxxxxPP1ttttt1iiii0vv | if (Pv.new) memh (Rx ++ #s4:1) = Rt.H + hi->instruction = HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (R%d ++ 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb602084) { + // Instruction: 10: 10101011011xxxxxPP1ttttt1iiii1vv | if !Pv.new memh (Rx ++ #s4:1) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____RT_H; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 1; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (R%d ++ 0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf400080) { + // Instruction: 10: 10101111010---iiPP0ttttt1iiii0vv | if (Pv) memh (#u6) = Rt + hi->instruction = HEX_INS_IF__PV__MEMH___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf400084) { + // Instruction: 10: 10101111010---iiPP0ttttt1iiii1vv | if !Pv memh (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMH___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf402080) { + // Instruction: 10: 10101111010---iiPP1ttttt1iiii0vv | if (Pv.new) memh (#u6) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMH___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf402084) { + // Instruction: 10: 10101111010---iiPP1ttttt1iiii1vv | if !Pv.new memh (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf600080) { + // Instruction: 10: 10101111011---iiPP0ttttt1iiii0vv | if (Pv) memh (#u6) = Rt.H + hi->instruction = HEX_INS_IF__PV__MEMH___U6____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memh (0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf600084) { + // Instruction: 10: 10101111011---iiPP0ttttt1iiii1vv | if !Pv memh (#u6) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_MEMH___U6____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memh (0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf602080) { + // Instruction: 10: 10101111011---iiPP1ttttt1iiii0vv | if (Pv.new) memh (#u6) = Rt.H + hi->instruction = HEX_INS_IF__PV_NEW__MEMH___U6____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memh (0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf602084) { + // Instruction: 10: 10101111011---iiPP1ttttt1iiii1vv | if !Pv.new memh (#u6) = Rt.H + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMH___U6____RT_H; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memh (0x%x) = R%d.H", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0x9e00000) == 0x1800000) { + // Instruction: 10: 10100ii1100sssssPPitttttiiiiiiii | memw (Rs + #s11:2) = Rt + hi->instruction = HEX_INS_MEMW__RS____S11_2____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x6000000) >> 25) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xff) >> 0)) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend_off(&hi->ops[1], 2); + sprintf(hi->mnem, "memw (R%d + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9800002) { + // Instruction: 10: 10101001100xxxxxPPuttttt0-----1- | memw (Rx ++ I:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMW__RX____I_CIRC__MU_____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ I:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00082) == 0x9800000) { + // Instruction: 10: 10101001100xxxxxPPuttttt0iiii-0- | memw (Rx ++ #s4:2:circ (Mu)) = Rt + hi->instruction = HEX_INS_MEMW__RX_____S4_2_CIRC__MU_____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ 0x%x:circ (R%d)) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xb800080) { + // Instruction: 10: 10101011100eeeeePP0ttttt1-IIIIII | memw (Re = #U6) = Rt + hi->instruction = HEX_INS_MEMW__RE____U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Re + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memw (R%d = 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02082) == 0xb800000) { + // Instruction: 10: 10101011100xxxxxPP0ttttt0iiii-0- | memw (Rx ++ #s4:2) = Rt + hi->instruction = HEX_INS_MEMW__RX_____S4_2____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd800080) { + // Instruction: 10: 10101101100uuuuuPPittttt1iIIIIII | memw (Ru << #u2 + #U6) = Rt + hi->instruction = HEX_INS_MEMW__RU_____U2____U6____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Ru + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x40) >> 6)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3f) >> 0); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "memw (R%d << 0x%x + 0x%x) = R%d", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xd800000) { + // Instruction: 10: 10101101100xxxxxPPuttttt0------- | memw (Rx ++ Mu) = Rt + hi->instruction = HEX_INS_MEMW__RX____MU____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ R%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0xf800000) { + // Instruction: 10: 10101111100xxxxxPPuttttt0------- | memw (Rx ++ Mu:brev) = Rt + hi->instruction = HEX_INS_MEMW__RX____MU_BREV____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x2000) >> 13); // Mu + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw (R%d ++ R%d:brev) = R%d", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb802000) { + // Instruction: 10: 10101011100xxxxxPP1ttttt0iiii0vv | if (Pv) memw (Rx ++ #s4:2) = Rt + hi->instruction = HEX_INS_IF__PV__MEMW__RX_____S4_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb802004) { + // Instruction: 10: 10101011100xxxxxPP1ttttt0iiii1vv | if !Pv memw (Rx ++ #s4:2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMW__RX_____S4_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb802080) { + // Instruction: 10: 10101011100xxxxxPP1ttttt1iiii0vv | if (Pv.new) memw (Rx ++ #s4:2) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMW__RX_____S4_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xb802084) { + // Instruction: 10: 10101011100xxxxxPP1ttttt1iiii1vv | if !Pv.new memw (Rx ++ #s4:2) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW__RX_____S4_2____RT; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x78) >> 3) << 2; // scaled + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (R%d ++ 0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf800080) { + // Instruction: 10: 10101111100---iiPP0ttttt1iiii0vv | if (Pv) memw (#u6) = Rt + hi->instruction = HEX_INS_IF__PV__MEMW___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pv) + sprintf(hi->mnem, "if (P%d) memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf800084) { + // Instruction: 10: 10101111100---iiPP0ttttt1iiii1vv | if !Pv memw (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_MEMW___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pv + sprintf(hi->mnem, "if !P%d memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf802080) { + // Instruction: 10: 10101111100---iiPP1ttttt1iiii0vv | if (Pv.new) memw (#u6) = Rt + hi->instruction = HEX_INS_IF__PV_NEW__MEMW___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pv.new) + sprintf(hi->mnem, "if (P%d.new) memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02084) == 0xf802084) { + // Instruction: 10: 10101111100---iiPP1ttttt1iiii1vv | if !Pv.new memw (#u6) = Rt + hi->instruction = HEX_INS_IF__NOT_PV_NEW_MEMW___U6____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x30000) >> 16) | ((hi_u32 & 0x78) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pv.new + sprintf(hi->mnem, "if !P%d.new memw (0x%x) = R%d", hi->ops[0].op.pred, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfff3800) == 0x9d0000) { + // Instruction: 10: 1010000010011101PP000iiiiiiiiiii | allocframe (#u11:3) + hi->instruction = HEX_INS_ALLOCFRAME___U11_3_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_IMM; + hi->ops[0].op.imm = (((hi_u32) & 0x7ff) >> 0) << 3; // scaled + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "allocframe (0x%x)", hi->ops[0].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2000000) { + // Instruction: 10: 10100010000-----PP-------------- | dckill + hi->instruction = HEX_INS_DCKILL; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dckill"); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2200000) { + // Instruction: 10: 10100010001sssssPP-------------- | dccleanidx (Rs) + hi->instruction = HEX_INS_DCCLEANIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dccleanidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2400000) { + // Instruction: 10: 10100010010sssssPP-------------- | dcinvidx (Rs) + hi->instruction = HEX_INS_DCINVIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dcinvidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2600000) { + // Instruction: 10: 10100010011sssssPP-------------- | dccleaninvidx (Rs) + hi->instruction = HEX_INS_DCCLEANINVIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dccleaninvidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4000000) { + // Instruction: 10: 10100100000sssssPP-ttttt-------- | dctagw (Rs, Rt) + hi->instruction = HEX_INS_DCTAGW__RS__RT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dctagw (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4200000) { + // Instruction: 10: 10100100001sssssPP---------ddddd | Rd = dctagr (Rs) + hi->instruction = HEX_INS_RD___DCTAGR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = dctagr (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6200000) { + // Instruction: 10: 10100110001sssssPP-------------- | l2cleanidx (Rs) + hi->instruction = HEX_INS_L2CLEANIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2cleanidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6400000) { + // Instruction: 10: 10100110010sssssPP-------------- | l2invidx (Rs) + hi->instruction = HEX_INS_L2INVIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2invidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8600000) { + // Instruction: 10: 10101000011sssssPP-------------- | l2cleaninvidx (Rs) + hi->instruction = HEX_INS_L2CLEANINVIDX__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2cleaninvidx (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6a00000) { + // Instruction: 10: 10100110101-----PP-ttttt-------- | l2gclean (Rtt) + hi->instruction = HEX_INS_L2GCLEAN__RTT_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2gclean (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6c00000) { + // Instruction: 10: 10100110110-----PP-ttttt-------- | l2gcleaninv (Rtt) + hi->instruction = HEX_INS_L2GCLEANINV__RTT_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2gcleaninv (R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe01c00) == 0x8200000) { + // Instruction: 10: 10101000001-----PP-000---------- | l2kill + hi->instruction = HEX_INS_L2KILL; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2kill"); + break; + } + if ((hi_u32 & 0xfe01c00) == 0x8200800) { + // Instruction: 10: 10101000001-----PP-010---------- | l2gunlock + hi->instruction = HEX_INS_L2GUNLOCK; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2gunlock"); + break; + } + if ((hi_u32 & 0xfe01c00) == 0x8201000) { + // Instruction: 10: 10101000001-----PP-100---------- | l2gclean + hi->instruction = HEX_INS_L2GCLEAN; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2gclean"); + break; + } + if ((hi_u32 & 0xfe01c00) == 0x8201800) { + // Instruction: 10: 10101000001-----PP-110---------- | l2gcleaninv + hi->instruction = HEX_INS_L2GCLEANINV; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2gcleaninv"); + break; + } + if ((hi_u32 & 0xfe02000) == 0xe02000) { + // Instruction: 10: 10100000111sssssPP1-----------dd | Pd = l2locka (Rs) + hi->instruction = HEX_INS_PD___L2LOCKA__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = l2locka (R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6600000) { + // Instruction: 10: 10100110011sssssPP-------------- | l2unlocka (Rs) + hi->instruction = HEX_INS_L2UNLOCKA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2unlocka (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0x4400000) { + // Instruction: 10: 10100100010sssssPP0ttttt-------- | l2tagw (Rs, Rt) + hi->instruction = HEX_INS_L2TAGW__RS__RT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2tagw (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x4600000) { + // Instruction: 10: 10100100011sssssPP---------ddddd | Rd = l2tagr (Rs) + hi->instruction = HEX_INS_RD___L2TAGR__RS_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = l2tagr (R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0xa00000) { + // Instruction: 10: 10100000101sssssPP-ttttt------dd | memw_locked (Rs, Pd) = Rt + hi->instruction = HEX_INS_MEMW_LOCKED__RS__PD____RT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memw_locked (R%d, P%d) = R%d", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xe00000) { + // Instruction: 10: 10100000111sssssPP0ttttt------dd | memd_locked (Rs, Pd) = Rtt + hi->instruction = HEX_INS_MEMD_LOCKED__RS__PD____RTT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "memd_locked (R%d, P%d) = R%d:R%d", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0xc00000) { + // Instruction: 10: 10100000110sssssPP0------------- | dczeroa (Rs) + hi->instruction = HEX_INS_DCZEROA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dczeroa (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8000000) { + // Instruction: 10: 10101000000-----PP-------------- | barrier + hi->instruction = HEX_INS_BARRIER; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "barrier"); + break; + } + if ((hi_u32 & 0xfe00000) == 0x0) { + // Instruction: 10: 10100000000sssssPP-------------- | dccleana (Rs) + hi->instruction = HEX_INS_DCCLEANA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dccleana (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x200000) { + // Instruction: 10: 10100000001sssssPP-------------- | dcinva (Rs) + hi->instruction = HEX_INS_DCINVA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dcinva (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x400000) { + // Instruction: 10: 10100000010sssssPP-------------- | dccleaninva (Rs) + hi->instruction = HEX_INS_DCCLEANINVA__RS_; + hi->op_count = 1; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "dccleaninva (R%d)", hi->ops[0].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6000000) { + // Instruction: 10: 10100110000sssssPP-ttttt-------- | l2fetch (Rs, Rt) + hi->instruction = HEX_INS_L2FETCH__RS__RT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2fetch (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6800000) { + // Instruction: 10: 10100110100sssssPP-ttttt-------- | l2fetch (Rs, Rtt) + hi->instruction = HEX_INS_L2FETCH__RS__RTT_; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "l2fetch (R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x8400000) { + // Instruction: 10: 10101000010-----PP-------------- | syncht + hi->instruction = HEX_INS_SYNCHT; + hi->op_count = 0; + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "syncht"); + break; + } + break; + } + case 0xb: { + if ((hi_u32 & 0x0) == 0x0) { + // Instruction: 11: 1011iiiiiiisssssPPiiiiiiiiiddddd | Rd = add (Rs, #s16) + hi->instruction = HEX_INS_RD___ADD__RS___S16_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0xfe00000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = add (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + break; + } + case 0xc: { + if ((hi_u32 & 0xfe00000) == 0x2c00000) { + // Instruction: 12: 11000010110sssssPP-ttttt-xxddddd | Rdd = add (Rss, Rtt, Px) :carry + hi->instruction = HEX_INS_RDD___ADD__RSS__RTT__PX___CARRY; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = add (R%d:R%d, R%d:R%d, P%d) :carry", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2e00000) { + // Instruction: 12: 11000010111sssssPP-ttttt-xxddddd | Rdd = sub (Rss, Rtt, Px) :carry + hi->instruction = HEX_INS_RDD___SUB__RSS__RTT__PX___CARRY; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = sub (R%d:R%d, R%d:R%d, P%d) :carry", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfc020e0) == 0xa800000) { + // Instruction: 12: 1100101010-sssssPP0ttttt000xxxxx | Rxx ^= xor (Rss, Rtt) + hi->instruction = HEX_INS_RXX____XOR__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= xor (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6c00000) { + // Instruction: 12: 1100011011-sssssPP-ttttt00-ddddd | Rd = cround (Rs, Rt) + hi->instruction = HEX_INS_RD___CROUND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cround (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6c00080) { + // Instruction: 12: 1100011011-sssssPP-ttttt10-ddddd | Rd = round (Rs, Rt) + hi->instruction = HEX_INS_RD___ROUND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = round (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6c000c0) { + // Instruction: 12: 1100011011-sssssPP-ttttt11-ddddd | Rd = round (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___ROUND__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = round (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1400020) { + // Instruction: 12: 1100000101-sssssPP-ttttt001ddddd | Rd = vaddhub (Rss, Rtt) :sat + hi->instruction = HEX_INS_RD___VADDHUB__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vaddhub (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3c00040) { + // Instruction: 12: 1100001111-sssssPP-ttttt01-ddddd | Rdd = vcnegh (Rss, Rt) + hi->instruction = HEX_INS_RDD___VCNEGH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vcnegh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb2020e0) { + // Instruction: 12: 11001011001sssssPP1ttttt111xxxxx | Rxx += vrcnegh (Rss, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCNEGH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcnegh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb200020) { + // Instruction: 12: 11001011001sssssPP0xxxxx001uuuuu | Rxx = vrmaxh (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMAXH__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmaxh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb202020) { + // Instruction: 12: 11001011001sssssPP1xxxxx001uuuuu | Rxx = vrmaxuh (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMAXUH__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmaxuh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb200040) { + // Instruction: 12: 11001011001sssssPP0xxxxx010uuuuu | Rxx = vrmaxw (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMAXW__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmaxw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb202040) { + // Instruction: 12: 11001011001sssssPP1xxxxx010uuuuu | Rxx = vrmaxuw (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMAXUW__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmaxuw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb2000a0) { + // Instruction: 12: 11001011001sssssPP0xxxxx101uuuuu | Rxx = vrminh (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMINH__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrminh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb2020a0) { + // Instruction: 12: 11001011001sssssPP1xxxxx101uuuuu | Rxx = vrminuh (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMINUH__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrminuh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb2000c0) { + // Instruction: 12: 11001011001sssssPP0xxxxx110uuuuu | Rxx = vrminw (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMINW__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrminw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb2020c0) { + // Instruction: 12: 11001011001sssssPP1xxxxx110uuuuu | Rxx = vrminuw (Rss, Ru) + hi->instruction = HEX_INS_RXX___VRMINUW__RSS__RU_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrminuw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1000000) { + // Instruction: 12: 1100000100-sssssPP-ttttt00-ddddd | Rdd = extractu (Rss, Rtt) + hi->instruction = HEX_INS_RDD___EXTRACTU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = extractu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1c00080) { + // Instruction: 12: 1100000111-sssssPP-ttttt10-ddddd | Rdd = extract (Rss, Rtt) + hi->instruction = HEX_INS_RDD___EXTRACT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = extract (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x9000000) { + // Instruction: 12: 1100100100-sssssPP-ttttt00-ddddd | Rd = extractu (Rs, Rtt) + hi->instruction = HEX_INS_RD___EXTRACTU__RS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = extractu (R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x9000040) { + // Instruction: 12: 1100100100-sssssPP-ttttt01-ddddd | Rd = extract (Rs, Rtt) + hi->instruction = HEX_INS_RD___EXTRACT__RS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = extract (R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf000000) == 0x8000000) { + // Instruction: 12: 11001000---sssssPP-ttttt---xxxxx | Rx = insert (Rs, Rtt) + hi->instruction = HEX_INS_RX___INSERT__RS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = insert (R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf802000) == 0xa000000) { + // Instruction: 12: 110010100--sssssPP0ttttt---xxxxx | Rxx = insert (Rss, Rtt) + hi->instruction = HEX_INS_RXX___INSERT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = insert (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x18000c0) { + // Instruction: 12: 1100000110-sssssPP-ttttt110ddddd | Rdd = lfs (Rss, Rtt) + hi->instruction = HEX_INS_RDD___LFS__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = lfs (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6800000) { + // Instruction: 12: 1100011010-sssssPP-ttttt00-ddddd | Rd = setbit (Rs, Rt) + hi->instruction = HEX_INS_RD___SETBIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = setbit (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6800040) { + // Instruction: 12: 1100011010-sssssPP-ttttt01-ddddd | Rd = clrbit (Rs, Rt) + hi->instruction = HEX_INS_RD___CLRBIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = clrbit (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6800080) { + // Instruction: 12: 1100011010-sssssPP-ttttt10-ddddd | Rd = togglebit (Rs, Rt) + hi->instruction = HEX_INS_RD___TOGGLEBIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = togglebit (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1400080) { + // Instruction: 12: 1100000101-sssssPP-ttttt100ddddd | Rdd = vxaddsubh (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VXADDSUBH__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxaddsubh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x14000c0) { + // Instruction: 12: 1100000101-sssssPP-ttttt110ddddd | Rdd = vxsubaddh (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VXSUBADDH__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxsubaddh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1c00000) { + // Instruction: 12: 1100000111-sssssPP-ttttt00-ddddd | Rdd = vxaddsubh (Rss, Rtt) :rnd:>>1:sat + hi->instruction = HEX_INS_RDD___VXADDSUBH__RSS__RTT___RND___1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RSH1; // :>>1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxaddsubh (R%d:R%d, R%d:R%d) :rnd:>>1:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1c00040) { + // Instruction: 12: 1100000111-sssssPP-ttttt01-ddddd | Rdd = vxsubaddh (Rss, Rtt) :rnd:>>1:sat + hi->instruction = HEX_INS_RDD___VXSUBADDH__RSS__RTT___RND___1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RSH1; // :>>1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxsubaddh (R%d:R%d, R%d:R%d) :rnd:>>1:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1400000) { + // Instruction: 12: 1100000101-sssssPP-ttttt000ddddd | Rdd = vxaddsubw (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VXADDSUBW__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxaddsubw (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1400040) { + // Instruction: 12: 1100000101-sssssPP-ttttt010ddddd | Rdd = vxsubaddw (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VXSUBADDW__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vxsubaddw (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf0000e0) == 0x5000080) { + // Instruction: 12: 11000101---sssssPP-ttttt100ddddd | Rd = cmpyiwh (Rss, Rt) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___CMPYIWH__RSS__RT_____1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpyiwh (R%d:R%d, R%d) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf0000e0) == 0x50000a0) { + // Instruction: 12: 11000101---sssssPP-ttttt101ddddd | Rd = cmpyiwh (Rss, Rt *) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___CMPYIWH__RSS__RT_______1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpyiwh (R%d:R%d, R%d *) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf0000e0) == 0x50000c0) { + // Instruction: 12: 11000101---sssssPP-ttttt110ddddd | Rd = cmpyrwh (Rss, Rt) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___CMPYRWH__RSS__RT_____1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpyrwh (R%d:R%d, R%d) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf0000e0) == 0x50000e0) { + // Instruction: 12: 11000101---sssssPP-ttttt111ddddd | Rd = cmpyrwh (Rss, Rt *) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___CMPYRWH__RSS__RT_______1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpyrwh (R%d:R%d, R%d *) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3c00000) { + // Instruction: 12: 1100001111-sssssPP-ttttt00-ddddd | Rdd = vcrotate (Rss, Rt) + hi->instruction = HEX_INS_RDD___VCROTATE__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vcrotate (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3c000c0) { + // Instruction: 12: 1100001111-sssssPPittttt11iddddd | Rdd = vrcrotate (Rss, Rt, #u2) + hi->instruction = HEX_INS_RDD___VRCROTATE__RSS__RT___U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x20) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrcrotate (R%d:R%d, R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0xba00000) { + // Instruction: 12: 11001011101sssssPPittttt--ixxxxx | Rxx += vrcrotate (Rss, Rt, #u2) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCROTATE__RSS__RT___U2_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0x20) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcrotate (R%d:R%d, R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7e00000) { + // Instruction: 12: 11000111111sssssPP-ttttt000---dd | Pd = cmp.ge (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_GE__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.ge (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7e00020) { + // Instruction: 12: 11000111111sssssPP-ttttt001---dd | Pd = cmp.uo (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_UO__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.uo (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7e00060) { + // Instruction: 12: 11000111111sssssPP-ttttt011---dd | Pd = cmp.eq (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_EQ__RS__RT__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.eq (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7e00080) { + // Instruction: 12: 11000111111sssssPP-ttttt100---dd | Pd = cmp.gt (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_GT__RS__RT__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gt (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1c000c0) { + // Instruction: 12: 1100000111-sssssPP-ttttt11-ddddd | Rdd = decbin (Rss, Rtt) + hi->instruction = HEX_INS_RDD___DECBIN__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = decbin (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0x0) { + // Instruction: 12: 110000000--sssssPP-tttttiiiddddd | Rdd = valignb (Rtt, Rss, #u3) + hi->instruction = HEX_INS_RDD___VALIGNB__RTT__RSS___U3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = valignb (R%d:R%d, R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800000) == 0x2000000) { + // Instruction: 12: 110000100--sssssPP-ttttt-uuddddd | Rdd = valignb (Rtt, Rss, Pu) + hi->instruction = HEX_INS_RDD___VALIGNB__RTT__RSS__PU_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = valignb (R%d:R%d, R%d:R%d, P%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1000040) { + // Instruction: 12: 1100000100-sssssPP-ttttt01-ddddd | Rdd = shuffeb (Rss, Rtt) + hi->instruction = HEX_INS_RDD___SHUFFEB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = shuffeb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x1000080) { + // Instruction: 12: 1100000100-sssssPP-ttttt10-ddddd | Rdd = shuffob (Rtt, Rss) + hi->instruction = HEX_INS_RDD___SHUFFOB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = shuffob (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x10000c0) { + // Instruction: 12: 1100000100-sssssPP-ttttt11-ddddd | Rdd = shuffeh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___SHUFFEH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = shuffeh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1800000) { + // Instruction: 12: 1100000110-sssssPP-ttttt000ddddd | Rdd = shuffoh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___SHUFFOH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = shuffoh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0x800000) { + // Instruction: 12: 110000001--sssssPP-tttttiiiddddd | Rdd = vspliceb (Rss, Rtt, #u3) + hi->instruction = HEX_INS_RDD___VSPLICEB__RSS__RTT___U3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vspliceb (R%d:R%d, R%d:R%d, 0x%x)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfe00000) == 0x2800000) { + // Instruction: 12: 11000010100sssssPP-ttttt-uuddddd | Rdd = vspliceb (Rss, Rtt, Pu) + hi->instruction = HEX_INS_RDD___VSPLICEB__RSS__RTT__PU_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vspliceb (R%d:R%d, R%d:R%d, P%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1800040) { + // Instruction: 12: 1100000110-sssssPP-ttttt010ddddd | Rdd = vtrunewh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VTRUNEWH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vtrunewh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1800060) { + // Instruction: 12: 1100000110-sssssPP-ttttt011ddddd | Rdd = vtrunehb (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VTRUNEHB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vtrunehb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x1800080) { + // Instruction: 12: 1100000110-sssssPP-ttttt100ddddd | Rdd = vtrunowh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VTRUNOWH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vtrunowh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000e0) == 0x18000a0) { + // Instruction: 12: 1100000110-sssssPP-ttttt101ddddd | Rdd = vtrunohb (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VTRUNOHB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vtrunohb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c00040) { + // Instruction: 12: 11000111110sssssPP-ttttt010---dd | Pd = cmpb.gt (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPB_GT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmpb.gt (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c000c0) { + // Instruction: 12: 11000111110sssssPP-ttttt110---dd | Pd = cmpb.eq (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPB_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmpb.eq (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c000e0) { + // Instruction: 12: 11000111110sssssPP-ttttt111---dd | Pd = cmpb.gtu (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPB_GTU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmpb.gtu (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c00060) { + // Instruction: 12: 11000111110sssssPP-ttttt011---dd | Pd = cmph.eq (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPH_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmph.eq (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c00080) { + // Instruction: 12: 11000111110sssssPP-ttttt100---dd | Pd = cmph.gt (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPH_GT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmph.gt (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x7c000a0) { + // Instruction: 12: 11000111110sssssPP-ttttt101---dd | Pd = cmph.gtu (Rs, Rt) + hi->instruction = HEX_INS_PD___CMPH_GTU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmph.gtu (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7400000) { + // Instruction: 12: 11000111010sssssPP-ttttt------dd | Pd = bitsset (Rs, Rt) + hi->instruction = HEX_INS_PD___BITSSET__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = bitsset (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7600000) { + // Instruction: 12: 11000111011sssssPP-ttttt------dd | Pd = !bitsset (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_BITSSET__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !bitsset (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7800000) { + // Instruction: 12: 11000111100sssssPP-ttttt------dd | Pd = bitsclr (Rs, Rt) + hi->instruction = HEX_INS_PD___BITSCLR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = bitsclr (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7a00000) { + // Instruction: 12: 11000111101sssssPP-ttttt------dd | Pd = !bitsclr (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_BITSCLR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !bitsclr (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7000000) { + // Instruction: 12: 11000111000sssssPP-ttttt------dd | Pd = tstbit (Rs, Rt) + hi->instruction = HEX_INS_PD___TSTBIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = tstbit (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x7200000) { + // Instruction: 12: 11000111001sssssPP-ttttt------dd | Pd = !tstbit (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_TSTBIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !tstbit (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02000) == 0x4000000) { + // Instruction: 12: 11000100000sssssPP0tttttiiiddddd | Rd = addasl (Rt, Rs, #u3) + hi->instruction = HEX_INS_RD___ADDASL__RT__RS___U3_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32) & 0xe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = addasl (R%d, R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3800000) { + // Instruction: 12: 1100001110-sssssPP-ttttt00-ddddd | Rdd = asr (Rss, Rt) + hi->instruction = HEX_INS_RDD___ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3800040) { + // Instruction: 12: 1100001110-sssssPP-ttttt01-ddddd | Rdd = lsr (Rss, Rt) + hi->instruction = HEX_INS_RDD___LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3800080) { + // Instruction: 12: 1100001110-sssssPP-ttttt10-ddddd | Rdd = asl (Rss, Rt) + hi->instruction = HEX_INS_RDD___ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x38000c0) { + // Instruction: 12: 1100001110-sssssPP-ttttt11-ddddd | Rdd = lsl (Rss, Rt) + hi->instruction = HEX_INS_RDD___LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6400000) { + // Instruction: 12: 1100011001-sssssPP-ttttt00-ddddd | Rd = asr (Rs, Rt) + hi->instruction = HEX_INS_RD___ASR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = asr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6400040) { + // Instruction: 12: 1100011001-sssssPP-ttttt01-ddddd | Rd = lsr (Rs, Rt) + hi->instruction = HEX_INS_RD___LSR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = lsr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6400080) { + // Instruction: 12: 1100011001-sssssPP-ttttt10-ddddd | Rd = asl (Rs, Rt) + hi->instruction = HEX_INS_RD___ASL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = asl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x64000c0) { + // Instruction: 12: 1100011001-sssssPP-ttttt11-ddddd | Rd = lsl (Rs, Rt) + hi->instruction = HEX_INS_RD___LSL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = lsl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x68000c0) { + // Instruction: 12: 1100011010-iiiiiPP-ttttt11iddddd | Rd = lsl (#s6, Rt) + hi->instruction = HEX_INS_RD___LSL___S6__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x1f0000) >> 16) | ((hi_u32 & 0x20) >> 5)); + if (hi->ops[1].op.imm & (1 << 1)) { + hi->ops[1].op.imm |= (0xFFFFFFFF << 1); + } + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = lsl (0x%x, R%d)", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb800000) { + // Instruction: 12: 11001011100sssssPP-ttttt00-xxxxx | Rxx -= asr (Rss, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb800040) { + // Instruction: 12: 11001011100sssssPP-ttttt01-xxxxx | Rxx -= lsr (Rss, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb800080) { + // Instruction: 12: 11001011100sssssPP-ttttt10-xxxxx | Rxx -= asl (Rss, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb8000c0) { + // Instruction: 12: 11001011100sssssPP-ttttt11-xxxxx | Rxx -= lsl (Rss, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xbc00000) { + // Instruction: 12: 11001011110sssssPP-ttttt00-xxxxx | Rxx += asr (Rss, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xbc00040) { + // Instruction: 12: 11001011110sssssPP-ttttt01-xxxxx | Rxx += lsr (Rss, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xbc00080) { + // Instruction: 12: 11001011110sssssPP-ttttt10-xxxxx | Rxx += asl (Rss, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xbc000c0) { + // Instruction: 12: 11001011110sssssPP-ttttt11-xxxxx | Rxx += lsl (Rss, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc800000) { + // Instruction: 12: 1100110010-sssssPP-ttttt00-xxxxx | Rx -= asr (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__ASR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= asr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc800040) { + // Instruction: 12: 1100110010-sssssPP-ttttt01-xxxxx | Rx -= lsr (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__LSR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= lsr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc800080) { + // Instruction: 12: 1100110010-sssssPP-ttttt10-xxxxx | Rx -= asl (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__ASL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= asl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc8000c0) { + // Instruction: 12: 1100110010-sssssPP-ttttt11-xxxxx | Rx -= lsl (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__LSL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= lsl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xcc00000) { + // Instruction: 12: 1100110011-sssssPP-ttttt00-xxxxx | Rx += asr (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__ASR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += asr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xcc00040) { + // Instruction: 12: 1100110011-sssssPP-ttttt01-xxxxx | Rx += lsr (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__LSR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += lsr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xcc00080) { + // Instruction: 12: 1100110011-sssssPP-ttttt10-xxxxx | Rx += asl (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__ASL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += asl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xcc000c0) { + // Instruction: 12: 1100110011-sssssPP-ttttt11-xxxxx | Rx += lsl (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__LSL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += lsl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb000000) { + // Instruction: 12: 11001011000sssssPP-ttttt00-xxxxx | Rxx |= asr (Rss, Rt) + hi->instruction = HEX_INS_RXX__OR_EQ__ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb000040) { + // Instruction: 12: 11001011000sssssPP-ttttt01-xxxxx | Rxx |= lsr (Rss, Rt) + hi->instruction = HEX_INS_RXX__OR_EQ__LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb000080) { + // Instruction: 12: 11001011000sssssPP-ttttt10-xxxxx | Rxx |= asl (Rss, Rt) + hi->instruction = HEX_INS_RXX__OR_EQ__ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb0000c0) { + // Instruction: 12: 11001011000sssssPP-ttttt11-xxxxx | Rxx |= lsl (Rss, Rt) + hi->instruction = HEX_INS_RXX__OR_EQ__LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d |= lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb400000) { + // Instruction: 12: 11001011010sssssPP-ttttt00-xxxxx | Rxx &= asr (Rss, Rt) + hi->instruction = HEX_INS_RXX__AND_EQ__ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb400040) { + // Instruction: 12: 11001011010sssssPP-ttttt01-xxxxx | Rxx &= lsr (Rss, Rt) + hi->instruction = HEX_INS_RXX__AND_EQ__LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb400080) { + // Instruction: 12: 11001011010sssssPP-ttttt10-xxxxx | Rxx &= asl (Rss, Rt) + hi->instruction = HEX_INS_RXX__AND_EQ__ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb4000c0) { + // Instruction: 12: 11001011010sssssPP-ttttt11-xxxxx | Rxx &= lsl (Rss, Rt) + hi->instruction = HEX_INS_RXX__AND_EQ__LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d &= lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb600000) { + // Instruction: 12: 11001011011sssssPP-ttttt00-xxxxx | Rxx ^= asr (Rss, Rt) + hi->instruction = HEX_INS_RXX____ASR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= asr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb600040) { + // Instruction: 12: 11001011011sssssPP-ttttt01-xxxxx | Rxx ^= lsr (Rss, Rt) + hi->instruction = HEX_INS_RXX____LSR__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= lsr (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb600080) { + // Instruction: 12: 11001011011sssssPP-ttttt10-xxxxx | Rxx ^= asl (Rss, Rt) + hi->instruction = HEX_INS_RXX____ASL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= asl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0xb6000c0) { + // Instruction: 12: 11001011011sssssPP-ttttt11-xxxxx | Rxx ^= lsl (Rss, Rt) + hi->instruction = HEX_INS_RXX____LSL__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= lsl (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc000000) { + // Instruction: 12: 1100110000-sssssPP-ttttt00-xxxxx | Rx |= asr (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__ASR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= asr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc000040) { + // Instruction: 12: 1100110000-sssssPP-ttttt01-xxxxx | Rx |= lsr (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__LSR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= lsr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc000080) { + // Instruction: 12: 1100110000-sssssPP-ttttt10-xxxxx | Rx |= asl (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__ASL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= asl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc0000c0) { + // Instruction: 12: 1100110000-sssssPP-ttttt11-xxxxx | Rx |= lsl (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__LSL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= lsl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc400000) { + // Instruction: 12: 1100110001-sssssPP-ttttt00-xxxxx | Rx &= asr (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__ASR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= asr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc400040) { + // Instruction: 12: 1100110001-sssssPP-ttttt01-xxxxx | Rx &= lsr (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__LSR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= lsr (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc400080) { + // Instruction: 12: 1100110001-sssssPP-ttttt10-xxxxx | Rx &= asl (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__ASL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= asl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0xc4000c0) { + // Instruction: 12: 1100110001-sssssPP-ttttt11-xxxxx | Rx &= lsl (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__LSL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= lsl (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6000000) { + // Instruction: 12: 1100011000-sssssPP-ttttt00-ddddd | Rd = asr (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___ASR__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = asr (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x6000080) { + // Instruction: 12: 1100011000-sssssPP-ttttt10-ddddd | Rd = asl (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___ASL__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = asl (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3400000) { + // Instruction: 12: 1100001101-sssssPP-ttttt00-ddddd | Rdd = vasrh (Rss, Rt) + hi->instruction = HEX_INS_RDD___VASRH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vasrh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3400040) { + // Instruction: 12: 1100001101-sssssPP-ttttt01-ddddd | Rdd = vlsrh (Rss, Rt) + hi->instruction = HEX_INS_RDD___VLSRH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlsrh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3400080) { + // Instruction: 12: 1100001101-sssssPP-ttttt10-ddddd | Rdd = vaslh (Rss, Rt) + hi->instruction = HEX_INS_RDD___VASLH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaslh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x34000c0) { + // Instruction: 12: 1100001101-sssssPP-ttttt11-ddddd | Rdd = vlslh (Rss, Rt) + hi->instruction = HEX_INS_RDD___VLSLH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlslh (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3000000) { + // Instruction: 12: 1100001100-sssssPP-ttttt00-ddddd | Rdd = vasrw (Rss, Rt) + hi->instruction = HEX_INS_RDD___VASRW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vasrw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3000040) { + // Instruction: 12: 1100001100-sssssPP-ttttt01-ddddd | Rdd = vlsrw (Rss, Rt) + hi->instruction = HEX_INS_RDD___VLSRW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlsrw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x3000080) { + // Instruction: 12: 1100001100-sssssPP-ttttt10-ddddd | Rdd = vaslw (Rss, Rt) + hi->instruction = HEX_INS_RDD___VASLW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaslw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc000c0) == 0x30000c0) { + // Instruction: 12: 1100001100-sssssPP-ttttt11-ddddd | Rdd = vlslw (Rss, Rt) + hi->instruction = HEX_INS_RDD___VLSLW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vlslw (R%d:R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf0000e0) == 0x5000040) { + // Instruction: 12: 11000101---sssssPP-ttttt010ddddd | Rd = vasrw (Rss, Rt) + hi->instruction = HEX_INS_RD___VASRW__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vasrw (R%d:R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + break; + } + case 0xd: { + if ((hi_u32 & 0xf800000) == 0xb000000) { + // Instruction: 13: 110110110iisssssPPidddddiiiuuuuu | Rd = add (Rs, add (Ru, #s6)) + hi->instruction = HEX_INS_RD___ADD__RS__ADD__RU___S6__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)); + if (hi->ops[3].op.imm & (1 << 3)) { + hi->ops[3].op.imm |= (0xFFFFFFFF << 3); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[3]); + sprintf(hi->mnem, "R%d = add (R%d, add (R%d, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800000) == 0xb800000) { + // Instruction: 13: 110110111iisssssPPidddddiiiuuuuu | Rd = add (Rs, sub (#s6, Ru)) + hi->instruction = HEX_INS_RD___ADD__RS__SUB___S6__RU__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d = add (R%d, sub (0x%x, R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x30000e0) { + // Instruction: 13: 11010011000sssssPP-ttttt111ddddd | Rdd = add (Rss, Rtt) + hi->instruction = HEX_INS_RDD___ADD__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = add (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x36000a0) { + // Instruction: 13: 11010011011sssssPP-ttttt101ddddd | Rdd = add (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___ADD__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = add (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x36000c0) { + // Instruction: 13: 11010011011sssssPP-ttttt110ddddd | Rdd = add (Rss, Rtt) :raw:lo + hi->instruction = HEX_INS_RDD___ADD__RSS__RTT___RAW_LO; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LO; // :lo + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d:R%d = add (R%d:R%d, R%d:R%d) :raw:lo", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x36000e0) { + // Instruction: 13: 11010011011sssssPP-ttttt111ddddd | Rdd = add (Rss, Rtt) :raw:hi + hi->instruction = HEX_INS_RDD___ADD__RSS__RTT___RAW_HI; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_HI; // :hi + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "R%d:R%d = add (R%d:R%d, R%d:R%d) :raw:hi", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5800000) { + // Instruction: 13: 11010101100sssssPP-ttttt0--ddddd | Rd = add (Rs, Rt) :sat:deprecated + hi->instruction = HEX_INS_RD___ADD__RS__RT___SAT_DEPRECATED; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_DEPRECATED; // :deprecated + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d, R%d) :sat:deprecated", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5000000) { + // Instruction: 13: 11010101000sssssPP-ttttt00-ddddd | Rd = add (Rt.L, Rs.L) + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_L_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.L)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5000040) { + // Instruction: 13: 11010101000sssssPP-ttttt01-ddddd | Rd = add (Rt.L, Rs.H) + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_H_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.H)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5000080) { + // Instruction: 13: 11010101000sssssPP-ttttt10-ddddd | Rd = add (Rt.L, Rs.L) :sat + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_L___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.L) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x50000c0) { + // Instruction: 13: 11010101000sssssPP-ttttt11-ddddd | Rd = add (Rt.L, Rs.H) :sat + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_H___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.H) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5400000) { + // Instruction: 13: 11010101010sssssPP-ttttt000ddddd | Rd = add (Rt.L, Rs.L) :<<16 + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_L_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.L) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5400020) { + // Instruction: 13: 11010101010sssssPP-ttttt001ddddd | Rd = add (Rt.L, Rs.H) :<<16 + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_H_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.H) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5400040) { + // Instruction: 13: 11010101010sssssPP-ttttt010ddddd | Rd = add (Rt.H, Rs.L) :<<16 + hi->instruction = HEX_INS_RD___ADD__RT_H__RS_L_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = add (R%d.H, R%d.L) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5400060) { + // Instruction: 13: 11010101010sssssPP-ttttt011ddddd | Rd = add (Rt.H, Rs.H) :<<16 + hi->instruction = HEX_INS_RD___ADD__RT_H__RS_H_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = add (R%d.H, R%d.H) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5400080) { + // Instruction: 13: 11010101010sssssPP-ttttt100ddddd | Rd = add (Rt.L, Rs.L) :sat:<<16 + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_L___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.L) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x54000a0) { + // Instruction: 13: 11010101010sssssPP-ttttt101ddddd | Rd = add (Rt.L, Rs.H) :sat:<<16 + hi->instruction = HEX_INS_RD___ADD__RT_L__RS_H___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.L, R%d.H) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x54000c0) { + // Instruction: 13: 11010101010sssssPP-ttttt110ddddd | Rd = add (Rt.H, Rs.L) :sat:<<16 + hi->instruction = HEX_INS_RD___ADD__RT_H__RS_L___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.H, R%d.L) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x54000e0) { + // Instruction: 13: 11010101010sssssPP-ttttt111ddddd | Rd = add (Rt.H, Rs.H) :sat:<<16 + hi->instruction = HEX_INS_RD___ADD__RT_H__RS_H___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d.H, R%d.H) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e00000) { + // Instruction: 13: 11010011111sssssPP-ttttt000ddddd | Rdd = and (Rss, Rtt) + hi->instruction = HEX_INS_RDD___AND__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = and (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e00020) { + // Instruction: 13: 11010011111sssssPP-ttttt001ddddd | Rdd = and (Rtt, ~Rss) + hi->instruction = HEX_INS_RDD___AND__RTT___RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = and (R%d:R%d, ~R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e00040) { + // Instruction: 13: 11010011111sssssPP-ttttt010ddddd | Rdd = or (Rss, Rtt) + hi->instruction = HEX_INS_RDD___OR__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = or (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e00060) { + // Instruction: 13: 11010011111sssssPP-ttttt011ddddd | Rdd = or (Rtt, ~Rss) + hi->instruction = HEX_INS_RDD___OR__RTT___RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = or (R%d:R%d, ~R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e00080) { + // Instruction: 13: 11010011111sssssPP-ttttt100ddddd | Rdd = xor (Rss, Rtt) + hi->instruction = HEX_INS_RDD___XOR__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = xor (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc00000) == 0xa000000) { + // Instruction: 13: 1101101000isssssPPiiiiiiiiixxxxx | Rx |= and (Rs, #s10) + hi->instruction = HEX_INS_RX__OR_EQ__AND__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= and (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0xa400000) { + // Instruction: 13: 1101101001ixxxxxPPiiiiiiiiiuuuuu | Rx = or (Ru, and (Rx, #s10)) + hi->instruction = HEX_INS_RX___OR__RU__AND__RX___S10__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = or (R%d, and (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0xa800000) { + // Instruction: 13: 1101101010isssssPPiiiiiiiiixxxxx | Rx |= or (Rs, #s10) + hi->instruction = HEX_INS_RX__OR_EQ__OR__RS___S10_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= or (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5c00000) { + // Instruction: 13: 11010101110sssssPP-ttttt0--ddddd | Rd = max (Rs, Rt) + hi->instruction = HEX_INS_RD___MAX__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = max (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5c00080) { + // Instruction: 13: 11010101110sssssPP-ttttt1--ddddd | Rd = maxu (Rs, Rt) + hi->instruction = HEX_INS_RD___MAXU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = maxu (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c00080) { + // Instruction: 13: 11010011110sssssPP-ttttt100ddddd | Rdd = max (Rss, Rtt) + hi->instruction = HEX_INS_RDD___MAX__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = max (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c000a0) { + // Instruction: 13: 11010011110sssssPP-ttttt101ddddd | Rdd = maxu (Rss, Rtt) + hi->instruction = HEX_INS_RDD___MAXU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = maxu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5a00000) { + // Instruction: 13: 11010101101sssssPP-ttttt0--ddddd | Rd = min (Rt, Rs) + hi->instruction = HEX_INS_RD___MIN__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = min (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5a00080) { + // Instruction: 13: 11010101101sssssPP-ttttt1--ddddd | Rd = minu (Rt, Rs) + hi->instruction = HEX_INS_RD___MINU__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = minu (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a000c0) { + // Instruction: 13: 11010011101sssssPP-ttttt110ddddd | Rdd = min (Rtt, Rss) + hi->instruction = HEX_INS_RDD___MIN__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = min (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a000e0) { + // Instruction: 13: 11010011101sssssPP-ttttt111ddddd | Rdd = minu (Rtt, Rss) + hi->instruction = HEX_INS_RDD___MINU__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = minu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3e000e0) { + // Instruction: 13: 11010011111sssssPP-ttttt111ddddd | Rd = modwrap (Rs, Rt) + hi->instruction = HEX_INS_RD___MODWRAP__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = modwrap (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x32000e0) { + // Instruction: 13: 11010011001sssssPP-ttttt111ddddd | Rdd = sub (Rtt, Rss) + hi->instruction = HEX_INS_RDD___SUB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = sub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00080) == 0x5800080) { + // Instruction: 13: 11010101100sssssPP-ttttt1--ddddd | Rd = sub (Rt, Rs) :sat:deprecated + hi->instruction = HEX_INS_RD___SUB__RT__RS___SAT_DEPRECATED; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_DEPRECATED; // :deprecated + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d, R%d) :sat:deprecated", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5200000) { + // Instruction: 13: 11010101001sssssPP-ttttt00-ddddd | Rd = sub (Rt.L, Rs.L) + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_L_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.L)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5200040) { + // Instruction: 13: 11010101001sssssPP-ttttt01-ddddd | Rd = sub (Rt.L, Rs.H) + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_H_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.H)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x5200080) { + // Instruction: 13: 11010101001sssssPP-ttttt10-ddddd | Rd = sub (Rt.L, Rs.L) :sat + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_L___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.L) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x52000c0) { + // Instruction: 13: 11010101001sssssPP-ttttt11-ddddd | Rd = sub (Rt.L, Rs.H) :sat + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_H___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.H) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5600000) { + // Instruction: 13: 11010101011sssssPP-ttttt000ddddd | Rd = sub (Rt.L, Rs.L) :<<16 + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_L_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.L) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5600020) { + // Instruction: 13: 11010101011sssssPP-ttttt001ddddd | Rd = sub (Rt.L, Rs.H) :<<16 + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_H_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.H) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5600040) { + // Instruction: 13: 11010101011sssssPP-ttttt010ddddd | Rd = sub (Rt.H, Rs.L) :<<16 + hi->instruction = HEX_INS_RD___SUB__RT_H__RS_L_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = sub (R%d.H, R%d.L) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5600060) { + // Instruction: 13: 11010101011sssssPP-ttttt011ddddd | Rd = sub (Rt.H, Rs.H) :<<16 + hi->instruction = HEX_INS_RD___SUB__RT_H__RS_H_____16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + sprintf(hi->mnem, "R%d = sub (R%d.H, R%d.H) :<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x5600080) { + // Instruction: 13: 11010101011sssssPP-ttttt100ddddd | Rd = sub (Rt.L, Rs.L) :sat:<<16 + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_L___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.L) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x56000a0) { + // Instruction: 13: 11010101011sssssPP-ttttt101ddddd | Rd = sub (Rt.L, Rs.H) :sat:<<16 + hi->instruction = HEX_INS_RD___SUB__RT_L__RS_H___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.L, R%d.H) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x56000c0) { + // Instruction: 13: 11010101011sssssPP-ttttt110ddddd | Rd = sub (Rt.H, Rs.L) :sat:<<16 + hi->instruction = HEX_INS_RD___SUB__RT_H__RS_L___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.H, R%d.L) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x56000e0) { + // Instruction: 13: 11010101011sssssPP-ttttt111ddddd | Rd = sub (Rt.H, Rs.H) :sat:<<16 + hi->instruction = HEX_INS_RD___SUB__RT_H__RS_H___SAT___16; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LSH16; // :<<16 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d.H, R%d.H) :sat:<<16", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3000040) { + // Instruction: 13: 11010011000sssssPP-ttttt010ddddd | Rdd = vaddh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VADDH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaddh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3000060) { + // Instruction: 13: 11010011000sssssPP-ttttt011ddddd | Rdd = vaddh (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VADDH__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vaddh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3000080) { + // Instruction: 13: 11010011000sssssPP-ttttt100ddddd | Rdd = vadduh (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VADDUH__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vadduh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3000000) { + // Instruction: 13: 11010011000sssssPP-ttttt000ddddd | Rdd = vaddub (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VADDUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaddub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3000020) { + // Instruction: 13: 11010011000sssssPP-ttttt001ddddd | Rdd = vaddub (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VADDUB__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vaddub (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x30000a0) { + // Instruction: 13: 11010011000sssssPP-ttttt101ddddd | Rdd = vaddw (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VADDW__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vaddw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x30000c0) { + // Instruction: 13: 11010011000sssssPP-ttttt110ddddd | Rdd = vaddw (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VADDW__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vaddw (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3400040) { + // Instruction: 13: 11010011010sssssPP-ttttt010ddddd | Rdd = vavgh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VAVGH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vavgh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3400060) { + // Instruction: 13: 11010011010sssssPP-ttttt011ddddd | Rdd = vavgh (Rss, Rtt) :rnd + hi->instruction = HEX_INS_RDD___VAVGH__RSS__RTT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = vavgh (R%d:R%d, R%d:R%d) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3400080) { + // Instruction: 13: 11010011010sssssPP-ttttt100ddddd | Rdd = vavgh (Rss, Rtt) :crnd + hi->instruction = HEX_INS_RDD___VAVGH__RSS__RTT___CRND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CRND; // :crnd + sprintf(hi->mnem, "R%d:R%d = vavgh (R%d:R%d, R%d:R%d) :crnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x34000a0) { + // Instruction: 13: 11010011010sssssPP-ttttt101ddddd | Rdd = vavguh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VAVGUH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vavguh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x34000c0) { + // Instruction: 13: 11010011010sssssPP-ttttt11-ddddd | Rdd = vavguh (Rss, Rtt) :rnd + hi->instruction = HEX_INS_RDD___VAVGUH__RSS__RTT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = vavguh (R%d:R%d, R%d:R%d) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3800000) { + // Instruction: 13: 11010011100sssssPP-ttttt000ddddd | Rdd = vnavgh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VNAVGH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vnavgh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3800020) { + // Instruction: 13: 11010011100sssssPP-ttttt001ddddd | Rdd = vnavgh (Rtt, Rss) :rnd:sat + hi->instruction = HEX_INS_RDD___VNAVGH__RTT__RSS___RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vnavgh (R%d:R%d, R%d:R%d) :rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3800040) { + // Instruction: 13: 11010011100sssssPP-ttttt010ddddd | Rdd = vnavgh (Rtt, Rss) :crnd:sat + hi->instruction = HEX_INS_RDD___VNAVGH__RTT__RSS___CRND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CRND; // :crnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vnavgh (R%d:R%d, R%d:R%d) :crnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3400000) { + // Instruction: 13: 11010011010sssssPP-ttttt000ddddd | Rdd = vavgub (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VAVGUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vavgub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3400020) { + // Instruction: 13: 11010011010sssssPP-ttttt001ddddd | Rdd = vavgub (Rss, Rtt) :rnd + hi->instruction = HEX_INS_RDD___VAVGUB__RSS__RTT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = vavgub (R%d:R%d, R%d:R%d) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3600000) { + // Instruction: 13: 11010011011sssssPP-ttttt000ddddd | Rdd = vavgw (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VAVGW__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vavgw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3600020) { + // Instruction: 13: 11010011011sssssPP-ttttt001ddddd | Rdd = vavgw (Rss, Rtt) :rnd + hi->instruction = HEX_INS_RDD___VAVGW__RSS__RTT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = vavgw (R%d:R%d, R%d:R%d) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3600040) { + // Instruction: 13: 11010011011sssssPP-ttttt010ddddd | Rdd = vavgw (Rss, Rtt) :crnd + hi->instruction = HEX_INS_RDD___VAVGW__RSS__RTT___CRND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CRND; // :crnd + sprintf(hi->mnem, "R%d:R%d = vavgw (R%d:R%d, R%d:R%d) :crnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3600060) { + // Instruction: 13: 11010011011sssssPP-ttttt011ddddd | Rdd = vavguw (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VAVGUW__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vavguw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3600080) { + // Instruction: 13: 11010011011sssssPP-ttttt100ddddd | Rdd = vavguw (Rss, Rtt) :rnd + hi->instruction = HEX_INS_RDD___VAVGUW__RSS__RTT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = vavguw (R%d:R%d, R%d:R%d) :rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3800060) { + // Instruction: 13: 11010011100sssssPP-ttttt011ddddd | Rdd = vnavgw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VNAVGW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vnavgw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x3800080) { + // Instruction: 13: 11010011100sssssPP-ttttt10-ddddd | Rdd = vnavgw (Rtt, Rss) :rnd:sat + hi->instruction = HEX_INS_RDD___VNAVGW__RTT__RSS___RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vnavgw (R%d:R%d, R%d:R%d) :rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000c0) == 0x38000c0) { + // Instruction: 13: 11010011100sssssPP-ttttt11-ddddd | Rdd = vnavgw (Rtt, Rss) :crnd:sat + hi->instruction = HEX_INS_RDD___VNAVGW__RTT__RSS___CRND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_CRND; // :crnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vnavgw (R%d:R%d, R%d:R%d) :crnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c00000) { + // Instruction: 13: 11010011110sssssPP-ttttt000ddddd | Rdd = vmaxub (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXUB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c000c0) { + // Instruction: 13: 11010011110sssssPP-ttttt110ddddd | Rdd = vmaxb (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c00020) { + // Instruction: 13: 11010011110sssssPP-ttttt001ddddd | Rdd = vmaxh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c00040) { + // Instruction: 13: 11010011110sssssPP-ttttt010ddddd | Rdd = vmaxuh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXUH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxuh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a000a0) { + // Instruction: 13: 11010011101sssssPP-ttttt101ddddd | Rdd = vmaxuw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXUW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxuw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c00060) { + // Instruction: 13: 11010011110sssssPP-ttttt011ddddd | Rdd = vmaxw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMAXW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmaxw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a00000) { + // Instruction: 13: 11010011101sssssPP-ttttt000ddddd | Rdd = vminub (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINUB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3c000e0) { + // Instruction: 13: 11010011110sssssPP-ttttt111ddddd | Rdd = vminb (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a00020) { + // Instruction: 13: 11010011101sssssPP-ttttt001ddddd | Rdd = vminh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a00040) { + // Instruction: 13: 11010011101sssssPP-ttttt010ddddd | Rdd = vminuh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINUH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminuh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a00060) { + // Instruction: 13: 11010011101sssssPP-ttttt011ddddd | Rdd = vminw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3a00080) { + // Instruction: 13: 11010011101sssssPP-ttttt100ddddd | Rdd = vminuw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VMINUW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vminuw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3200040) { + // Instruction: 13: 11010011001sssssPP-ttttt010ddddd | Rdd = vsubh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VSUBH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsubh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3200060) { + // Instruction: 13: 11010011001sssssPP-ttttt011ddddd | Rdd = vsubh (Rtt, Rss) :sat + hi->instruction = HEX_INS_RDD___VSUBH__RTT__RSS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vsubh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3200080) { + // Instruction: 13: 11010011001sssssPP-ttttt100ddddd | Rdd = vsubuh (Rtt, Rss) :sat + hi->instruction = HEX_INS_RDD___VSUBUH__RTT__RSS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vsubuh (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3200000) { + // Instruction: 13: 11010011001sssssPP-ttttt000ddddd | Rdd = vsubub (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VSUBUB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsubub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x3200020) { + // Instruction: 13: 11010011001sssssPP-ttttt001ddddd | Rdd = vsubub (Rtt, Rss) :sat + hi->instruction = HEX_INS_RDD___VSUBUB__RTT__RSS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vsubub (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x32000a0) { + // Instruction: 13: 11010011001sssssPP-ttttt101ddddd | Rdd = vsubw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VSUBW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vsubw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x32000c0) { + // Instruction: 13: 11010011001sssssPP-ttttt110ddddd | Rdd = vsubw (Rtt, Rss) :sat + hi->instruction = HEX_INS_RDD___VSUBW__RTT__RSS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vsubw (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf000000) == 0x0) { + // Instruction: 13: 11010000---sssssPP-ttttt---ddddd | Rd = parity (Rss, Rtt) + hi->instruction = HEX_INS_RD___PARITY__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = parity (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x5e00000) { + // Instruction: 13: 11010101111sssssPP-ttttt---ddddd | Rd = parity (Rs, Rt) + hi->instruction = HEX_INS_RD___PARITY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = parity (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf200000) == 0x4200000) { + // Instruction: 13: 11010100--1sssssPP-ttttt---ddddd | Rdd = bitsplit (Rs, Rt) + hi->instruction = HEX_INS_RDD___BITSPLIT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = bitsplit (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe01c18) == 0xc800010) { + // Instruction: 13: 11011100100sssssPP-000iiiii10-dd | Pd = dfclass (Rss, #u5) + hi->instruction = HEX_INS_PD___DFCLASS__RSS___U5_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x3e0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = dfclass (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2e00000) { + // Instruction: 13: 11010010111sssssPP-ttttt000---dd | Pd = cmp.eq (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_EQ__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.eq (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2e00020) { + // Instruction: 13: 11010010111sssssPP-ttttt001---dd | Pd = cmp.gt (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_GT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gt (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2e00040) { + // Instruction: 13: 11010010111sssssPP-ttttt010---dd | Pd = cmp.ge (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_GE__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.ge (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2e00060) { + // Instruction: 13: 11010010111sssssPP-ttttt011---dd | Pd = cmp.uo (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_UO__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.uo (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfc00000) == 0x6000000) { + // Instruction: 13: 1101011000i-----PPiiiiiiiiiddddd | Rd = sfmake (#u10) :pos + hi->instruction = HEX_INS_RD___SFMAKE___U10___POS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_POS; // :pos + sprintf(hi->mnem, "R%d = sfmake (0x%x) :pos", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x6400000) { + // Instruction: 13: 1101011001i-----PPiiiiiiiiiddddd | Rd = sfmake (#u10) :neg + hi->instruction = HEX_INS_RD___SFMAKE___U10___NEG; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_NEG; // :neg + sprintf(hi->mnem, "R%d = sfmake (0x%x) :neg", hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x9000000) { + // Instruction: 13: 1101100100i-----PPiiiiiiiiiddddd | Rdd = dfmake (#u10) :pos + hi->instruction = HEX_INS_RDD___DFMAKE___U10___POS; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_POS; // :pos + sprintf(hi->mnem, "R%d:R%d = dfmake (0x%x) :pos", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xfc00000) == 0x9400000) { + // Instruction: 13: 1101100101i-----PPiiiiiiiiiddddd | Rdd = dfmake (#u10) :neg + hi->instruction = HEX_INS_RDD___DFMAKE___U10___NEG; + hi->op_count = 2; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x3fe0) >> 5)); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_NEG; // :neg + sprintf(hi->mnem, "R%d:R%d = dfmake (0x%x) :neg", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.imm); + break; + } + if ((hi_u32 & 0xf800000) == 0x7000000) { + // Instruction: 13: 110101110iisssssPPitttttiiiddddd | Rd = add (#u6, mpyi (Rs, Rt)) + hi->instruction = HEX_INS_RD___ADD___U6__MPYI__RS__RT__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (0x%x, mpyi (R%d, R%d))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf000000) == 0x8000000) { + // Instruction: 13: 11011000IiisssssPPidddddiiiIIIII | Rd = add (#u6, mpyi (Rs, #U6)) + hi->instruction = HEX_INS_RD___ADD___U6__MPYI__RS___U6__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x800000) >> 23) | ((hi_u32 & 0x1f) >> 0)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (0x%x, mpyi (R%d, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf800000) == 0xf000000) { + // Instruction: 13: 110111110iisssssPPidddddiiiuuuuu | Rd = add (Ru, mpyi (#u6:2, Rs)) + hi->instruction = HEX_INS_RD___ADD__RU__MPYI___U6_2__RS__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)) << 2; // scaled + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d, mpyi (0x%x, R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0xf800000) { + // Instruction: 13: 110111111iisssssPPidddddiiiuuuuu | Rd = add (Ru, mpyi (Rs, #u6)) + hi->instruction = HEX_INS_RD___ADD__RU__MPYI__RS___U6__; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_IMM; + hi->ops[3].op.imm = (((hi_u32 & 0x600000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5)); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d, mpyi (R%d, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.imm); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2002080) { + // Instruction: 13: 110100100--sssssPP1ttttt100---dd | Pd = boundscheck (Rss, Rtt) :raw:lo + hi->instruction = HEX_INS_PD___BOUNDSCHECK__RSS__RTT___RAW_LO; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LO; // :lo + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "P%d = boundscheck (R%d:R%d, R%d:R%d) :raw:lo", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x20020a0) { + // Instruction: 13: 110100100--sssssPP1ttttt101---dd | Pd = boundscheck (Rss, Rtt) :raw:hi + hi->instruction = HEX_INS_PD___BOUNDSCHECK__RSS__RTT___RAW_HI; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_HI; // :hi + hi->pf |= HEX_PF_RAW; // :raw + sprintf(hi->mnem, "P%d = boundscheck (R%d:R%d, R%d:R%d) :raw:hi", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf600018) == 0xd000000) { + // Instruction: 13: 11011101-00sssssPP-iiiiiiii00-dd | Pd = cmpb.eq (Rs, #u8) + hi->instruction = HEX_INS_PD___CMPB_EQ__RS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmpb.eq (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf600018) == 0xd200000) { + // Instruction: 13: 11011101-01sssssPP-iiiiiiii00-dd | Pd = cmpb.gt (Rs, #s8) + hi->instruction = HEX_INS_PD___CMPB_GT__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmpb.gt (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf601018) == 0xd400000) { + // Instruction: 13: 11011101-10sssssPP-0iiiiiii00-dd | Pd = cmpb.gtu (Rs, #u7) + hi->instruction = HEX_INS_PD___CMPB_GTU__RS___U7_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xfe0) >> 5); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmpb.gtu (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf600018) == 0xd000008) { + // Instruction: 13: 11011101-00sssssPP-iiiiiiii01-dd | Pd = cmph.eq (Rs, #s8) + hi->instruction = HEX_INS_PD___CMPH_EQ__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmph.eq (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf600018) == 0xd200008) { + // Instruction: 13: 11011101-01sssssPP-iiiiiiii01-dd | Pd = cmph.gt (Rs, #s8) + hi->instruction = HEX_INS_PD___CMPH_GT__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmph.gt (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf601018) == 0xd400008) { + // Instruction: 13: 11011101-10sssssPP-0iiiiiii01-dd | Pd = cmph.gtu (Rs, #u7) + hi->instruction = HEX_INS_PD___CMPH_GTU__RS___U7_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xfe0) >> 5); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "P%d = cmph.gtu (R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2800000) { + // Instruction: 13: 11010010100sssssPP-ttttt000---dd | Pd = cmp.eq (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_EQ__RSS__RTT__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.eq (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2800040) { + // Instruction: 13: 11010010100sssssPP-ttttt010---dd | Pd = cmp.gt (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_GT__RSS__RTT__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gt (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe000e0) == 0x2800080) { + // Instruction: 13: 11010010100sssssPP-ttttt100---dd | Pd = cmp.gtu (Rss, Rtt) + hi->instruction = HEX_INS_PD___CMP_GTU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gtu (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2002060) { + // Instruction: 13: 110100100--sssssPP1ttttt011---dd | Pd = tlbmatch (Rss, Rt) + hi->instruction = HEX_INS_PD___TLBMATCH__RSS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = tlbmatch (R%d:R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2000060) { + // Instruction: 13: 110100100--sssssPP0ttttt011---dd | Pd = vcmph.eq (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPH_EQ__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.eq (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2000080) { + // Instruction: 13: 110100100--sssssPP0ttttt100---dd | Pd = vcmph.gt (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPH_GT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.gt (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x20000a0) { + // Instruction: 13: 110100100--sssssPP0ttttt101---dd | Pd = vcmph.gtu (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPH_GTU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.gtu (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc000008) { + // Instruction: 13: 11011100000sssssPP-iiiiiiii01-dd | Pd = vcmph.eq (Rss, #s8) + hi->instruction = HEX_INS_PD___VCMPH_EQ__RSS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.eq (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc200008) { + // Instruction: 13: 11011100001sssssPP-iiiiiiii01-dd | Pd = vcmph.gt (Rss, #s8) + hi->instruction = HEX_INS_PD___VCMPH_GT__RSS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.gt (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01018) == 0xc400008) { + // Instruction: 13: 11011100010sssssPP-0iiiiiii01-dd | Pd = vcmph.gtu (Rss, #u7) + hi->instruction = HEX_INS_PD___VCMPH_GTU__RSS___U7_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xfe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmph.gtu (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2002000) { + // Instruction: 13: 110100100--sssssPP1ttttt000---dd | Pd = any8 (vcmpb.eq (Rss, Rtt)) + hi->instruction = HEX_INS_PD___ANY8__VCMPB_EQ__RSS__RTT__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = any8 (vcmpb.eq (R%d:R%d, R%d:R%d))", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x20000c0) { + // Instruction: 13: 110100100--sssssPP0ttttt110---dd | Pd = vcmpb.eq (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPB_EQ__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.eq (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x20000e0) { + // Instruction: 13: 110100100--sssssPP0ttttt111---dd | Pd = vcmpb.gtu (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPB_GTU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.gtu (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2002040) { + // Instruction: 13: 110100100--sssssPP1ttttt010---dd | Pd = vcmpb.gt (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPB_GT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.gt (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc000000) { + // Instruction: 13: 11011100000sssssPP-iiiiiiii00-dd | Pd = vcmpb.eq (Rss, #u8) + hi->instruction = HEX_INS_PD___VCMPB_EQ__RSS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.eq (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc200000) { + // Instruction: 13: 11011100001sssssPP-iiiiiiii00-dd | Pd = vcmpb.gt (Rss, #s8) + hi->instruction = HEX_INS_PD___VCMPB_GT__RSS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.gt (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01018) == 0xc400000) { + // Instruction: 13: 11011100010sssssPP-0iiiiiii00-dd | Pd = vcmpb.gtu (Rss, #u7) + hi->instruction = HEX_INS_PD___VCMPB_GTU__RSS___U7_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xfe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpb.gtu (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2000000) { + // Instruction: 13: 110100100--sssssPP0ttttt000---dd | Pd = vcmpw.eq (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPW_EQ__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.eq (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2000020) { + // Instruction: 13: 110100100--sssssPP0ttttt001---dd | Pd = vcmpw.gt (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPW_GT__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.gt (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf8020e0) == 0x2000040) { + // Instruction: 13: 110100100--sssssPP0ttttt010---dd | Pd = vcmpw.gtu (Rss, Rtt) + hi->instruction = HEX_INS_PD___VCMPW_GTU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.gtu (R%d:R%d, R%d:R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc000010) { + // Instruction: 13: 11011100000sssssPP-iiiiiiii10-dd | Pd = vcmpw.eq (Rss, #s8) + hi->instruction = HEX_INS_PD___VCMPW_EQ__RSS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.eq (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe00018) == 0xc200010) { + // Instruction: 13: 11011100001sssssPP-iiiiiiii10-dd | Pd = vcmpw.gt (Rss, #s8) + hi->instruction = HEX_INS_PD___VCMPW_GT__RSS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.gt (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe01018) == 0xc400010) { + // Instruction: 13: 11011100010sssssPP-0iiiiiii10-dd | Pd = vcmpw.gtu (Rss, #u7) + hi->instruction = HEX_INS_PD___VCMPW_GTU__RSS___U7_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0xfe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = vcmpw.gtu (R%d:R%d, 0x%x)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000000) == 0x1000000) { + // Instruction: 13: 11010001---sssssPP-ttttt-uuddddd | Rdd = vmux (Pu, Rss, Rtt) + hi->instruction = HEX_INS_RDD___VMUX__PU__RSS__RTT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmux (P%d, R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000004) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii0i10- | Rx = add (#u8, asl (Rx, #U5)) + hi->instruction = HEX_INS_RX___ADD___U8__ASL__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = add (0x%x, asl (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000006) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii0i11- | Rx = sub (#u8, asl (Rx, #U5)) + hi->instruction = HEX_INS_RX___SUB___U8__ASL__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = sub (0x%x, asl (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000014) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii1i10- | Rx = add (#u8, lsr (Rx, #U5)) + hi->instruction = HEX_INS_RX___ADD___U8__LSR__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = add (0x%x, lsr (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000016) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii1i11- | Rx = sub (#u8, lsr (Rx, #U5)) + hi->instruction = HEX_INS_RX___SUB___U8__LSR__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = sub (0x%x, lsr (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000000) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii0i00- | Rx = and (#u8, asl (Rx, #U5)) + hi->instruction = HEX_INS_RX___AND___U8__ASL__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = and (0x%x, asl (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000002) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii0i01- | Rx = or (#u8, asl (Rx, #U5)) + hi->instruction = HEX_INS_RX___OR___U8__ASL__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = or (0x%x, asl (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000010) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii1i00- | Rx = and (#u8, lsr (Rx, #U5)) + hi->instruction = HEX_INS_RX___AND___U8__LSR__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = and (0x%x, lsr (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf000016) == 0xe000012) { + // Instruction: 13: 11011110iiixxxxxPPiIIIIIiii1i01- | Rx = or (#u8, lsr (Rx, #U5)) + hi->instruction = HEX_INS_RX___OR___U8__LSR__RX___U5__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rx + hi->ops[1].type = HEX_OP_TYPE_IMM; + hi->ops[1].op.imm = (((hi_u32 & 0xe00000) >> 21) | ((hi_u32 & 0x2000) >> 13) | ((hi_u32 & 0xe0) >> 5) | ((hi_u32 & 0x8) >> 3)); + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[1]); + sprintf(hi->mnem, "R%d = or (0x%x, lsr (Rx, 0x%x))", hi->ops[0].op.reg, hi->ops[1].op.imm, hi->ops[2].op.imm); + break; + } + break; + } + case 0xe: { + if ((hi_u32 & 0xf802000) == 0x2000000) { + // Instruction: 14: 111000100--sssssPP0iiiiiiiixxxxx | Rx += add (Rs, #s8) + hi->instruction = HEX_INS_RX__PLUS_EQ__ADD__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d += add (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x2800000) { + // Instruction: 14: 111000101--sssssPP0iiiiiiiixxxxx | Rx -= add (Rs, #s8) + hi->instruction = HEX_INS_RX__MINUS_EQ__ADD__RS___S8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + if (hi->ops[2].op.imm & (1 << 2)) { + hi->ops[2].op.imm |= (0xFFFFFFFF << 2); + } + hi->predicate = HEX_NOPRED; + hex_op_extend(&hi->ops[2]); + sprintf(hi->mnem, "R%d -= add (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf000020) { + // Instruction: 14: 11101111000sssssPP0ttttt001xxxxx | Rx += add (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__ADD__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += add (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf800020) { + // Instruction: 14: 11101111100sssssPP0ttttt001xxxxx | Rx -= add (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__ADD__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= add (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf200000) { + // Instruction: 14: 11101111001sssssPP0ttttt000xxxxx | Rx |= and (Rs, ~Rt) + hi->instruction = HEX_INS_RX__OR_EQ__AND__RS___RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= and (R%d, ~R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf200020) { + // Instruction: 14: 11101111001sssssPP0ttttt001xxxxx | Rx &= and (Rs, ~Rt) + hi->instruction = HEX_INS_RX__AND_EQ__AND__RS___RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= and (R%d, ~R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf200040) { + // Instruction: 14: 11101111001sssssPP0ttttt010xxxxx | Rx ^= and (Rs, ~Rt) + hi->instruction = HEX_INS_RX____AND__RS___RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= and (R%d, ~R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf400000) { + // Instruction: 14: 11101111010sssssPP0ttttt000xxxxx | Rx &= and (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__AND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= and (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf400020) { + // Instruction: 14: 11101111010sssssPP0ttttt001xxxxx | Rx &= or (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__OR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= or (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf400040) { + // Instruction: 14: 11101111010sssssPP0ttttt010xxxxx | Rx &= xor (Rs, Rt) + hi->instruction = HEX_INS_RX__AND_EQ__XOR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d &= xor (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf400060) { + // Instruction: 14: 11101111010sssssPP0ttttt011xxxxx | Rx |= and (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__AND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= and (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf800060) { + // Instruction: 14: 11101111100sssssPP0ttttt011xxxxx | Rx ^= xor (Rs, Rt) + hi->instruction = HEX_INS_RX____XOR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= xor (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xfc00000) { + // Instruction: 14: 11101111110sssssPP0ttttt000xxxxx | Rx |= or (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__OR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= or (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xfc00020) { + // Instruction: 14: 11101111110sssssPP0ttttt001xxxxx | Rx |= xor (Rs, Rt) + hi->instruction = HEX_INS_RX__OR_EQ__XOR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d |= xor (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xfc00040) { + // Instruction: 14: 11101111110sssssPP0ttttt010xxxxx | Rx ^= and (Rs, Rt) + hi->instruction = HEX_INS_RX____AND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= and (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xfc00060) { + // Instruction: 14: 11101111110sssssPP0ttttt011xxxxx | Rx ^= or (Rs, Rt) + hi->instruction = HEX_INS_RX____OR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d ^= or (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf000060) { + // Instruction: 14: 11101111000sssssPP0ttttt011xxxxx | Rx += sub (Rt, Rs) + hi->instruction = HEX_INS_RX__PLUS_EQ__SUB__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += sub (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8a00000) { + // Instruction: 14: 11101000101sssssPP0ttttt000ddddd | Rdd = vabsdiffub (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VABSDIFFUB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsdiffub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8e00000) { + // Instruction: 14: 11101000111sssssPP0ttttt000ddddd | Rdd = vabsdiffb (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VABSDIFFB__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsdiffb (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8600000) { + // Instruction: 14: 11101000011sssssPP0ttttt000ddddd | Rdd = vabsdiffh (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VABSDIFFH__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsdiffh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8200000) { + // Instruction: 14: 11101000001sssssPP0ttttt000ddddd | Rdd = vabsdiffw (Rtt, Rss) + hi->instruction = HEX_INS_RDD___VABSDIFFW__RTT__RSS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vabsdiffw (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xaa00000) { + // Instruction: 14: 11101010101sssssPP0ttttt0eexxxxx | Rxx, Pe = vacsh (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PE___VACSH__RSS__RTT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d, P%d = vacsh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8400020) { + // Instruction: 14: 11101000010sssssPP0ttttt001ddddd | Rdd = vraddub (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRADDUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vraddub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa400020) { + // Instruction: 14: 11101010010sssssPP0ttttt001xxxxx | Rxx += vraddub (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRADDUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vraddub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf802060) == 0x9000020) { + // Instruction: 14: 111010010--sssssPP0ttttt-01ddddd | Rd = vradduh (Rss, Rtt) + hi->instruction = HEX_INS_RD___VRADDUH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vradduh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfa020e0) == 0x92000e0) { + // Instruction: 14: 111010010-1sssssPP0ttttt111ddddd | Rd = vraddh (Rss, Rtt) + hi->instruction = HEX_INS_RD___VRADDH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vraddh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xae00000) { + // Instruction: 14: 11101010111sssssPP0ttttt0eeddddd | Rdd, Pe = vminub (Rtt, Rss) + hi->instruction = HEX_INS_RDD__PE___VMINUB__RTT__RSS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].attr |= HEX_OP_REG_PAIR; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d, P%d = vminub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, hi->ops[3].op.reg + 1, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8400040) { + // Instruction: 14: 11101000010sssssPP0ttttt010ddddd | Rdd = vrsadub (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRSADUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrsadub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa400040) { + // Instruction: 14: 11101010010sssssPP0ttttt010xxxxx | Rxx += vrsadub (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRSADUB__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrsadub (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x50000c0) { + // Instruction: 14: 11100101N00sssssPP0ttttt110ddddd | Rdd = cmpy (Rs, Rt) [:<instruction = HEX_INS_RDD___CMPY__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = cmpy (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x54000c0) { + // Instruction: 14: 11100101N10sssssPP0ttttt110ddddd | Rdd = cmpy (Rs, Rt *) [:<instruction = HEX_INS_RDD___CMPY__RS__RT________N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = cmpy (R%d, R%d *) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x70000c0) { + // Instruction: 14: 11100111N00sssssPP0ttttt110xxxxx | Rxx += cmpy (Rs, Rt) [:<instruction = HEX_INS_RXX__PLUS_EQ__CMPY__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += cmpy (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x70000e0) { + // Instruction: 14: 11100111N00sssssPP0ttttt111xxxxx | Rxx -= cmpy (Rs, Rt) [:<instruction = HEX_INS_RXX__MINUS_EQ__CMPY__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d -= cmpy (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x74000c0) { + // Instruction: 14: 11100111N10sssssPP0ttttt110xxxxx | Rxx += cmpy (Rs, Rt *) [:<instruction = HEX_INS_RXX__PLUS_EQ__CMPY__RS__RT________N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += cmpy (R%d, R%d *) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x74000e0) { + // Instruction: 14: 11100111N10sssssPP0ttttt111xxxxx | Rxx -= cmpy (Rs, Rt *) [:<instruction = HEX_INS_RXX__MINUS_EQ__CMPY__RS__RT________N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d -= cmpy (R%d, R%d *) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5000020) { + // Instruction: 14: 11100101000sssssPP0ttttt001ddddd | Rdd = cmpyi (Rs, Rt) + hi->instruction = HEX_INS_RDD___CMPYI__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = cmpyi (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5000040) { + // Instruction: 14: 11100101000sssssPP0ttttt010ddddd | Rdd = cmpyr (Rs, Rt) + hi->instruction = HEX_INS_RDD___CMPYR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = cmpyr (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7000020) { + // Instruction: 14: 11100111000sssssPP0ttttt001xxxxx | Rxx += cmpyi (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__CMPYI__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += cmpyi (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7000040) { + // Instruction: 14: 11100111000sssssPP0ttttt010xxxxx | Rxx += cmpyr (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__CMPYR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += cmpyr (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xd2000c0) { + // Instruction: 14: 11101101N01sssssPP0ttttt110ddddd | Rd = cmpy (Rs, Rt) [:<instruction = HEX_INS_RD___CMPY__RS__RT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpy (R%d, R%d) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xd6000c0) { + // Instruction: 14: 11101101N11sssssPP0ttttt110ddddd | Rd = cmpy (Rs, Rt *) [:<instruction = HEX_INS_RD___CMPY__RS__RT________N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = cmpy (R%d, R%d *) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x82000c0) { + // Instruction: 14: 11101000N01sssssPP0ttttt110ddddd | Rdd = vcmpyr (Rss, Rtt) [:<instruction = HEX_INS_RDD___VCMPYR__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vcmpyr (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x84000c0) { + // Instruction: 14: 11101000N10sssssPP0ttttt110ddddd | Rdd = vcmpyi (Rss, Rtt) [:<instruction = HEX_INS_RDD___VCMPYI__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vcmpyi (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa200080) { + // Instruction: 14: 11101010001sssssPP0ttttt100xxxxx | Rxx += vcmpyr (Rss, Rtt) :sat + hi->instruction = HEX_INS_RXX__PLUS_EQ__VCMPYR__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vcmpyr (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa400080) { + // Instruction: 14: 11101010010sssssPP0ttttt100xxxxx | Rxx += vcmpyi (Rss, Rtt) :sat + hi->instruction = HEX_INS_RXX__PLUS_EQ__VCMPYI__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vcmpyi (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8000000) { + // Instruction: 14: 11101000000sssssPP0ttttt000ddddd | Rdd = vrcmpyi (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRCMPYI__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrcmpyi (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8000020) { + // Instruction: 14: 11101000000sssssPP0ttttt001ddddd | Rdd = vrcmpyr (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRCMPYR__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrcmpyr (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8400000) { + // Instruction: 14: 11101000010sssssPP0ttttt000ddddd | Rdd = vrcmpyi (Rss, Rtt *) + hi->instruction = HEX_INS_RDD___VRCMPYI__RSS__RTT___; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrcmpyi (R%d:R%d, R%d:R%d *)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8600020) { + // Instruction: 14: 11101000011sssssPP0ttttt001ddddd | Rdd = vrcmpyr (Rss, Rtt *) + hi->instruction = HEX_INS_RDD___VRCMPYR__RSS__RTT___; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrcmpyr (R%d:R%d, R%d:R%d *)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa000000) { + // Instruction: 14: 11101010000sssssPP0ttttt000xxxxx | Rxx += vrcmpyi (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYI__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcmpyi (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa000020) { + // Instruction: 14: 11101010000sssssPP0ttttt001xxxxx | Rxx += vrcmpyr (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYR__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcmpyr (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa400000) { + // Instruction: 14: 11101010010sssssPP0ttttt000xxxxx | Rxx += vrcmpyi (Rss, Rtt *) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYI__RSS__RTT___; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcmpyi (R%d:R%d, R%d:R%d *)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa600020) { + // Instruction: 14: 11101010011sssssPP0ttttt001xxxxx | Rxx += vrcmpyr (Rss, Rtt *) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYR__RSS__RTT___; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrcmpyr (R%d:R%d, R%d:R%d *)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8a00080) { + // Instruction: 14: 11101000101sssssPP0ttttt100ddddd | Rdd = vrcmpys (Rss, Rtt) :<<1:sat:raw:hi + hi->instruction = HEX_INS_RDD___VRCMPYS__RSS__RTT_____1_SAT_RAW_HI; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_HI; // :hi + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vrcmpys (R%d:R%d, R%d:R%d) :<<1:sat:raw:hi", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8e00080) { + // Instruction: 14: 11101000111sssssPP0ttttt100ddddd | Rdd = vrcmpys (Rss, Rtt) :<<1:sat:raw:lo + hi->instruction = HEX_INS_RDD___VRCMPYS__RSS__RTT_____1_SAT_RAW_LO; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LO; // :lo + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vrcmpys (R%d:R%d, R%d:R%d) :<<1:sat:raw:lo", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xaa00080) { + // Instruction: 14: 11101010101sssssPP0ttttt100xxxxx | Rxx += vrcmpys (Rss, Rtt) :<<1:sat:raw:hi + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYS__RSS__RTT_____1_SAT_RAW_HI; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_HI; // :hi + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vrcmpys (R%d:R%d, R%d:R%d) :<<1:sat:raw:hi", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xae00080) { + // Instruction: 14: 11101010111sssssPP0ttttt100xxxxx | Rxx += vrcmpys (Rss, Rtt) :<<1:sat:raw:lo + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRCMPYS__RSS__RTT_____1_SAT_RAW_LO; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LO; // :lo + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vrcmpys (R%d:R%d, R%d:R%d) :<<1:sat:raw:lo", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfa020e0) == 0x9a000c0) { + // Instruction: 14: 111010011-1sssssPP0ttttt110ddddd | Rd = vrcmpys (Rss, Rtt) :<<1:rnd:sat:raw:hi + hi->instruction = HEX_INS_RD___VRCMPYS__RSS__RTT_____1_RND_SAT_RAW_HI; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_HI; // :hi + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vrcmpys (R%d:R%d, R%d:R%d) :<<1:rnd:sat:raw:hi", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfa020e0) == 0x9a000e0) { + // Instruction: 14: 111010011-1sssssPP0ttttt111ddddd | Rd = vrcmpys (Rss, Rtt) :<<1:rnd:sat:raw:lo + hi->instruction = HEX_INS_RD___VRCMPYS__RSS__RTT_____1_RND_SAT_RAW_LO; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_LO; // :lo + hi->pf |= HEX_PF_RAW; // :raw + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vrcmpys (R%d:R%d, R%d:R%d) :<<1:rnd:sat:raw:lo", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb000000) { + // Instruction: 14: 11101011000sssssPP0ttttt000ddddd | Rd = sfadd (Rs, Rt) + hi->instruction = HEX_INS_RD___SFADD__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sfadd (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xbc00000) { + // Instruction: 14: 11101011110sssssPP0ttttt000ddddd | Rd = sffixupn (Rs, Rt) + hi->instruction = HEX_INS_RD___SFFIXUPN__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sffixupn (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xbc00020) { + // Instruction: 14: 11101011110sssssPP0ttttt001ddddd | Rd = sffixupd (Rs, Rt) + hi->instruction = HEX_INS_RD___SFFIXUPD__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sffixupd (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf000080) { + // Instruction: 14: 11101111000sssssPP0ttttt100xxxxx | Rx += sfmpy (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += sfmpy (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf0000a0) { + // Instruction: 14: 11101111000sssssPP0ttttt101xxxxx | Rx -= sfmpy (Rs, Rt) + hi->instruction = HEX_INS_RX__MINUS_EQ__SFMPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= sfmpy (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xf600080) { + // Instruction: 14: 11101111011sssssPP0ttttt1uuxxxxx | Rx += sfmpy (Rs, Rt, Pu) :scale + hi->instruction = HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT__PU___SCALE; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_PREDICATE; + hi->ops[3].op.pred = (((hi_u32) & 0x60) >> 5); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SCALE; // :scale + sprintf(hi->mnem, "R%d += sfmpy (R%d, R%d, P%d) :scale", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.pred); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf0000c0) { + // Instruction: 14: 11101111000sssssPP0ttttt110xxxxx | Rx += sfmpy (Rs, Rt) :lib + hi->instruction = HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT___LIB; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += sfmpy (R%d, R%d) :lib", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf0000e0) { + // Instruction: 14: 11101111000sssssPP0ttttt111xxxxx | Rx -= sfmpy (Rs, Rt) :lib + hi->instruction = HEX_INS_RX__MINUS_EQ__SFMPY__RS__RT___LIB; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= sfmpy (R%d, R%d) :lib", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb800000) { + // Instruction: 14: 11101011100sssssPP0ttttt000ddddd | Rd = sfmax (Rs, Rt) + hi->instruction = HEX_INS_RD___SFMAX__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sfmax (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb800020) { + // Instruction: 14: 11101011100sssssPP0ttttt001ddddd | Rd = sfmin (Rs, Rt) + hi->instruction = HEX_INS_RD___SFMIN__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sfmin (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb400000) { + // Instruction: 14: 11101011010sssssPP0ttttt000ddddd | Rd = sfmpy (Rs, Rt) + hi->instruction = HEX_INS_RD___SFMPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sfmpy (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe02080) == 0xbe00080) { + // Instruction: 14: 11101011111sssssPP0ttttt1eeddddd | Rd, Pe = sfrecipa (Rs, Rt) + hi->instruction = HEX_INS_RD__PE___SFRECIPA__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d, P%d = sfrecipa (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xb000020) { + // Instruction: 14: 11101011000sssssPP0ttttt001ddddd | Rd = sfsub (Rs, Rt) + hi->instruction = HEX_INS_RD___SFSUB__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sfsub (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3000000) { + // Instruction: 14: 11100011000sssssPP-yyyyy---uuuuu | Ry = add (Ru, mpyi (Ry, Rs)) + hi->instruction = HEX_INS_RY___ADD__RU__MPYI__RY__RS__; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f00) >> 8); // Ry + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Ru + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d, mpyi (Ry, R%d))", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf802000) == 0x0) { + // Instruction: 14: 111000000--sssssPP0iiiiiiiiddddd | Rd = + mpyi (Rs, #u8) + hi->instruction = HEX_INS_RD__EQ_PLUS__MPYI__RS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = + mpyi (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x800000) { + // Instruction: 14: 111000001--sssssPP0iiiiiiiiddddd | Rd = - mpyi (Rs, #u8) + hi->instruction = HEX_INS_RD__EQ_MINUS__MPYI__RS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = - mpyi (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x1000000) { + // Instruction: 14: 111000010--sssssPP0iiiiiiiixxxxx | Rx += mpyi (Rs, #u8) + hi->instruction = HEX_INS_RX__PLUS_EQ__MPYI__RS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyi (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xf802000) == 0x1800000) { + // Instruction: 14: 111000011--sssssPP0iiiiiiiixxxxx | Rx -= mpyi (Rs, #u8) + hi->instruction = HEX_INS_RX__MINUS_EQ__MPYI__RS___U8_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_IMM; + hi->ops[2].op.imm = (((hi_u32) & 0x1fe0) >> 5); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpyi (R%d, 0x%x)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.imm); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xd000000) { + // Instruction: 14: 11101101000sssssPP0ttttt000ddddd | Rd = mpyi (Rs, Rt) + hi->instruction = HEX_INS_RD___MPYI__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyi (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf000000) { + // Instruction: 14: 11101111000sssssPP0ttttt000xxxxx | Rx += mpyi (Rs, Rt) + hi->instruction = HEX_INS_RX__PLUS_EQ__MPYI__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyi (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x80000a0) { + // Instruction: 14: 11101000N00sssssPP0ttttt101ddddd | Rdd = vmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWEH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyweh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x80000e0) { + // Instruction: 14: 11101000N00sssssPP0ttttt111ddddd | Rdd = vmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWOH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpywoh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x82000a0) { + // Instruction: 14: 11101000N01sssssPP0ttttt101ddddd | Rdd = vmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWEH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyweh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x82000e0) { + // Instruction: 14: 11101000N01sssssPP0ttttt111ddddd | Rdd = vmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWOH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpywoh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa0000a0) { + // Instruction: 14: 11101010N00sssssPP0ttttt101xxxxx | Rxx += vmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWEH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyweh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa0000e0) { + // Instruction: 14: 11101010N00sssssPP0ttttt111xxxxx | Rxx += vmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWOH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpywoh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa2000a0) { + // Instruction: 14: 11101010N01sssssPP0ttttt101xxxxx | Rxx += vmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWEH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyweh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa2000e0) { + // Instruction: 14: 11101010N01sssssPP0ttttt111xxxxx | Rxx += vmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWOH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpywoh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x84000a0) { + // Instruction: 14: 11101000N10sssssPP0ttttt101ddddd | Rdd = vmpyweuh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWEUH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyweuh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x84000e0) { + // Instruction: 14: 11101000N10sssssPP0ttttt111ddddd | Rdd = vmpywouh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWOUH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpywouh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x86000a0) { + // Instruction: 14: 11101000N11sssssPP0ttttt101ddddd | Rdd = vmpyweuh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWEUH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyweuh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x86000e0) { + // Instruction: 14: 11101000N11sssssPP0ttttt111ddddd | Rdd = vmpywouh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYWOUH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpywouh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa4000a0) { + // Instruction: 14: 11101010N10sssssPP0ttttt101xxxxx | Rxx += vmpyweuh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWEUH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyweuh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa4000e0) { + // Instruction: 14: 11101010N10sssssPP0ttttt111xxxxx | Rxx += vmpywouh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWOUH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpywouh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa6000a0) { + // Instruction: 14: 11101010N11sssssPP0ttttt101xxxxx | Rxx += vmpyweuh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWEUH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyweuh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa6000e0) { + // Instruction: 14: 11101010N11sssssPP0ttttt111xxxxx | Rxx += vmpywouh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYWOUH__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpywouh (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4000000) { + // Instruction: 14: 11100100N00sssssPP-ttttt-00ddddd | Rdd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RDD___MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4000020) { + // Instruction: 14: 11100100N00sssssPP-ttttt-01ddddd | Rdd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RDD___MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4000040) { + // Instruction: 14: 11100100N00sssssPP-ttttt-10ddddd | Rdd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RDD___MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4000060) { + // Instruction: 14: 11100100N00sssssPP-ttttt-11ddddd | Rdd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RDD___MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4200000) { + // Instruction: 14: 11100100N01sssssPP-ttttt-00ddddd | Rdd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RDD___MPY__RS_L__RT_L______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.L, R%d.L) %s:rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4200020) { + // Instruction: 14: 11100100N01sssssPP-ttttt-01ddddd | Rdd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RDD___MPY__RS_L__RT_H______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.L, R%d.H) %s:rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4200040) { + // Instruction: 14: 11100100N01sssssPP-ttttt-10ddddd | Rdd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RDD___MPY__RS_H__RT_L______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.H, R%d.L) %s:rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4200060) { + // Instruction: 14: 11100100N01sssssPP-ttttt-11ddddd | Rdd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RDD___MPY__RS_H__RT_H______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d:R%d = mpy (R%d.H, R%d.H) %s:rnd", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6000000) { + // Instruction: 14: 11100110N00sssssPP-ttttt000xxxxx | Rxx += mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6000020) { + // Instruction: 14: 11100110N00sssssPP-ttttt001xxxxx | Rxx += mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6000040) { + // Instruction: 14: 11100110N00sssssPP-ttttt010xxxxx | Rxx += mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6000060) { + // Instruction: 14: 11100110N00sssssPP-ttttt011xxxxx | Rxx += mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6200000) { + // Instruction: 14: 11100110N01sssssPP-ttttt000xxxxx | Rxx -= mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6200020) { + // Instruction: 14: 11100110N01sssssPP-ttttt001xxxxx | Rxx -= mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6200040) { + // Instruction: 14: 11100110N01sssssPP-ttttt010xxxxx | Rxx -= mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6200060) { + // Instruction: 14: 11100110N01sssssPP-ttttt011xxxxx | Rxx -= mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc000000) { + // Instruction: 14: 11101100N00sssssPP-ttttt000ddddd | Rd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc000020) { + // Instruction: 14: 11101100N00sssssPP-ttttt001ddddd | Rd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc000040) { + // Instruction: 14: 11101100N00sssssPP-ttttt010ddddd | Rd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc000060) { + // Instruction: 14: 11101100N00sssssPP-ttttt011ddddd | Rd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc000080) { + // Instruction: 14: 11101100N00sssssPP-ttttt100ddddd | Rd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc0000a0) { + // Instruction: 14: 11101100N00sssssPP-ttttt101ddddd | Rd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc0000c0) { + // Instruction: 14: 11101100N00sssssPP-ttttt110ddddd | Rd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc0000e0) { + // Instruction: 14: 11101100N00sssssPP-ttttt111ddddd | Rd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc200000) { + // Instruction: 14: 11101100N01sssssPP-ttttt000ddddd | Rd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_L______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.L) %s:rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc200020) { + // Instruction: 14: 11101100N01sssssPP-ttttt001ddddd | Rd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_H______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.H) %s:rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc200040) { + // Instruction: 14: 11101100N01sssssPP-ttttt010ddddd | Rd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_L______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.L) %s:rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc200060) { + // Instruction: 14: 11101100N01sssssPP-ttttt011ddddd | Rd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_H______N__RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.H) %s:rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc200080) { + // Instruction: 14: 11101100N01sssssPP-ttttt100ddddd | Rd = mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_L______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.L) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc2000a0) { + // Instruction: 14: 11101100N01sssssPP-ttttt101ddddd | Rd = mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_L__RT_H______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.L, R%d.H) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc2000c0) { + // Instruction: 14: 11101100N01sssssPP-ttttt110ddddd | Rd = mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_L______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.L) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc2000e0) { + // Instruction: 14: 11101100N01sssssPP-ttttt111ddddd | Rd = mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RD___MPY__RS_H__RT_H______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d.H, R%d.H) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe000000) { + // Instruction: 14: 11101110N00sssssPP-ttttt000xxxxx | Rx += mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe000020) { + // Instruction: 14: 11101110N00sssssPP-ttttt001xxxxx | Rx += mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe000040) { + // Instruction: 14: 11101110N00sssssPP-ttttt010xxxxx | Rx += mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe000060) { + // Instruction: 14: 11101110N00sssssPP-ttttt011xxxxx | Rx += mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe000080) { + // Instruction: 14: 11101110N00sssssPP-ttttt100xxxxx | Rx += mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d += mpy (R%d.L, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe0000a0) { + // Instruction: 14: 11101110N00sssssPP-ttttt101xxxxx | Rx += mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d += mpy (R%d.L, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe0000c0) { + // Instruction: 14: 11101110N00sssssPP-ttttt110xxxxx | Rx += mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d += mpy (R%d.H, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe0000e0) { + // Instruction: 14: 11101110N00sssssPP-ttttt111xxxxx | Rx += mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d += mpy (R%d.H, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe200000) { + // Instruction: 14: 11101110N01sssssPP-ttttt000xxxxx | Rx -= mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpy (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe200020) { + // Instruction: 14: 11101110N01sssssPP-ttttt001xxxxx | Rx -= mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpy (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe200040) { + // Instruction: 14: 11101110N01sssssPP-ttttt010xxxxx | Rx -= mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpy (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe200060) { + // Instruction: 14: 11101110N01sssssPP-ttttt011xxxxx | Rx -= mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpy (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe200080) { + // Instruction: 14: 11101110N01sssssPP-ttttt100xxxxx | Rx -= mpy (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d -= mpy (R%d.L, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe2000a0) { + // Instruction: 14: 11101110N01sssssPP-ttttt101xxxxx | Rx -= mpy (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d -= mpy (R%d.L, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe2000c0) { + // Instruction: 14: 11101110N01sssssPP-ttttt110xxxxx | Rx -= mpy (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_L______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d -= mpy (R%d.H, R%d.L) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe2000e0) { + // Instruction: 14: 11101110N01sssssPP-ttttt111xxxxx | Rx -= mpy (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_H______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d -= mpy (R%d.H, R%d.H) %s:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4400000) { + // Instruction: 14: 11100100N10sssssPP-ttttt-00ddddd | Rdd = mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RDD___MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4400020) { + // Instruction: 14: 11100100N10sssssPP-ttttt-01ddddd | Rdd = mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RDD___MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4400040) { + // Instruction: 14: 11100100N10sssssPP-ttttt-10ddddd | Rdd = mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RDD___MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf600060) == 0x4400060) { + // Instruction: 14: 11100100N10sssssPP-ttttt-11ddddd | Rdd = mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RDD___MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6400000) { + // Instruction: 14: 11100110N10sssssPP-ttttt000xxxxx | Rxx += mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6400020) { + // Instruction: 14: 11100110N10sssssPP-ttttt001xxxxx | Rxx += mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6400040) { + // Instruction: 14: 11100110N10sssssPP-ttttt010xxxxx | Rxx += mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6400060) { + // Instruction: 14: 11100110N10sssssPP-ttttt011xxxxx | Rxx += mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RXX__PLUS_EQ__MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6600000) { + // Instruction: 14: 11100110N11sssssPP-ttttt000xxxxx | Rxx -= mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6600020) { + // Instruction: 14: 11100110N11sssssPP-ttttt001xxxxx | Rxx -= mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6600040) { + // Instruction: 14: 11100110N11sssssPP-ttttt010xxxxx | Rxx -= mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0x6600060) { + // Instruction: 14: 11100110N11sssssPP-ttttt011xxxxx | Rxx -= mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RXX__MINUS_EQ__MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc400000) { + // Instruction: 14: 11101100N10sssssPP-ttttt000ddddd | Rd = mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RD___MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc400020) { + // Instruction: 14: 11101100N10sssssPP-ttttt001ddddd | Rd = mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RD___MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc400040) { + // Instruction: 14: 11101100N10sssssPP-ttttt010ddddd | Rd = mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RD___MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xc400060) { + // Instruction: 14: 11101100N10sssssPP-ttttt011ddddd | Rd = mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RD___MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe400000) { + // Instruction: 14: 11101110N10sssssPP-ttttt000xxxxx | Rx += mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe400020) { + // Instruction: 14: 11101110N10sssssPP-ttttt001xxxxx | Rx += mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe400040) { + // Instruction: 14: 11101110N10sssssPP-ttttt010xxxxx | Rx += mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__PLUS_EQ__MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe400060) { + // Instruction: 14: 11101110N10sssssPP-ttttt011xxxxx | Rx += mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__PLUS_EQ__MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d += mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe600000) { + // Instruction: 14: 11101110N11sssssPP-ttttt000xxxxx | Rx -= mpyu (Rs.L, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPYU__RS_L__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpyu (R%d.L, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe600020) { + // Instruction: 14: 11101110N11sssssPP-ttttt001xxxxx | Rx -= mpyu (Rs.L, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPYU__RS_L__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpyu (R%d.L, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe600040) { + // Instruction: 14: 11101110N11sssssPP-ttttt010xxxxx | Rx -= mpyu (Rs.H, Rt.L) [:<instruction = HEX_INS_RX__MINUS_EQ__MPYU__RS_H__RT_L______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpyu (R%d.H, R%d.L) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6000e0) == 0xe600060) { + // Instruction: 14: 11101110N11sssssPP-ttttt011xxxxx | Rx -= mpyu (Rs.H, Rt.H) [:<instruction = HEX_INS_RX__MINUS_EQ__MPYU__RS_H__RT_H______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d -= mpyu (R%d.H, R%d.H) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x54000e0) { + // Instruction: 14: 11100101010sssssPP0ttttt111ddddd | Rdd = pmpyw (Rs, Rt) + hi->instruction = HEX_INS_RDD___PMPYW__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = pmpyw (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x72000e0) { + // Instruction: 14: 11100111001sssssPP0ttttt111xxxxx | Rxx ^= pmpyw (Rs, Rt) + hi->instruction = HEX_INS_RXX____PMPYW__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= pmpyw (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x8200040) { + // Instruction: 14: 11101000N01sssssPP0ttttt010ddddd | Rdd = vrmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VRMPYWOH__RSS__RTT______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmpywoh (R%d:R%d, R%d:R%d) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x8400080) { + // Instruction: 14: 11101000N10sssssPP0ttttt100ddddd | Rdd = vrmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VRMPYWEH__RSS__RTT______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmpyweh (R%d:R%d, R%d:R%d) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa2000c0) { + // Instruction: 14: 11101010N01sssssPP0ttttt110xxxxx | Rxx += vrmpyweh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VRMPYWEH__RSS__RTT______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrmpyweh (R%d:R%d, R%d:R%d) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa6000c0) { + // Instruction: 14: 11101010N11sssssPP0ttttt110xxxxx | Rxx += vrmpywoh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VRMPYWOH__RSS__RTT______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrmpywoh (R%d:R%d, R%d:R%d) %s", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xd200020) { + // Instruction: 14: 11101101001sssssPP0ttttt001ddddd | Rd = mpy (Rs, Rt) :rnd + hi->instruction = HEX_INS_RD___MPY__RS__RT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = mpy (R%d, R%d) :rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xd400020) { + // Instruction: 14: 11101101010sssssPP0ttttt001ddddd | Rd = mpyu (Rs, Rt) + hi->instruction = HEX_INS_RD___MPYU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpyu (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xd600020) { + // Instruction: 14: 11101101011sssssPP0ttttt001ddddd | Rd = mpysu (Rs, Rt) + hi->instruction = HEX_INS_RD___MPYSU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpysu (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xda00000) { + // Instruction: 14: 11101101101sssssPP0ttttt000ddddd | Rd = mpy (Rs, Rt.H) :<<1:sat + hi->instruction = HEX_INS_RD___MPY__RS__RT_H_____1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d, R%d.H) :<<1:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xda00020) { + // Instruction: 14: 11101101101sssssPP0ttttt001ddddd | Rd = mpy (Rs, Rt.L) :<<1:sat + hi->instruction = HEX_INS_RD___MPY__RS__RT_L_____1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d, R%d.L) :<<1:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xda00080) { + // Instruction: 14: 11101101101sssssPP0ttttt100ddddd | Rd = mpy (Rs, Rt.H) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___MPY__RS__RT_H_____1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d, R%d.H) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xde00000) { + // Instruction: 14: 11101101111sssssPP0ttttt000ddddd | Rd = mpy (Rs, Rt) :<<1:sat + hi->instruction = HEX_INS_RD___MPY__RS__RT_____1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d, R%d) :<<1:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xde00080) { + // Instruction: 14: 11101101111sssssPP0ttttt100ddddd | Rd = mpy (Rs, Rt.L) :<<1:rnd:sat + hi->instruction = HEX_INS_RD___MPY__RS__RT_L_____1_RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = mpy (R%d, R%d.L) :<<1:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf402080) == 0xd000000) { + // Instruction: 14: 11101101N0NsssssPP0ttttt0NNddddd | Rd = mpy (Rs, Rt) [:<instruction = HEX_INS_RD___MPY__RS__RT______N_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32 & 0x800000) >> 23) | ((hi_u32 & 0x200000) >> 21) | ((hi_u32 & 0x60) >> 5))) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mpy (R%d, R%d) %s", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf600000) { + // Instruction: 14: 11101111011sssssPP0ttttt000xxxxx | Rx += mpy (Rs, Rt) :<<1:sat + hi->instruction = HEX_INS_RX__PLUS_EQ__MPY__RS__RT_____1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d += mpy (R%d, R%d) :<<1:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xf600020) { + // Instruction: 14: 11101111011sssssPP0ttttt001xxxxx | Rx -= mpy (Rs, Rt) :<<1:sat + hi->instruction = HEX_INS_RX__MINUS_EQ__MPY__RS__RT_____1_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rx + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_LSH1; // :<<1 + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d -= mpy (R%d, R%d) :<<1:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5000000) { + // Instruction: 14: 11100101000sssssPP0ttttt000ddddd | Rdd = mpy (Rs, Rt) + hi->instruction = HEX_INS_RDD___MPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpy (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5400000) { + // Instruction: 14: 11100101010sssssPP0ttttt000ddddd | Rdd = mpyu (Rs, Rt) + hi->instruction = HEX_INS_RDD___MPYU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = mpyu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7000000) { + // Instruction: 14: 11100111000sssssPP0ttttt000xxxxx | Rxx += mpy (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__MPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpy (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7200000) { + // Instruction: 14: 11100111001sssssPP0ttttt000xxxxx | Rxx -= mpy (Rs, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__MPY__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpy (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7400000) { + // Instruction: 14: 11100111010sssssPP0ttttt000xxxxx | Rxx += mpyu (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__MPYU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += mpyu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7600000) { + // Instruction: 14: 11100111011sssssPP0ttttt000xxxxx | Rxx -= mpyu (Rs, Rt) + hi->instruction = HEX_INS_RXX__MINUS_EQ__MPYU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d -= mpyu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x8000080) { + // Instruction: 14: 11101000N00sssssPP0ttttt100ddddd | Rdd = vdmpy (Rss, Rtt) [:<instruction = HEX_INS_RDD___VDMPY__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vdmpy (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa000080) { + // Instruction: 14: 11101010N00sssssPP0ttttt100xxxxx | Rxx += vdmpy (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VDMPY__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vdmpy (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf002060) == 0x9000000) { + // Instruction: 14: 11101001N--sssssPP0ttttt-00ddddd | Rd = vdmpy (Rss, Rtt) [:<instruction = HEX_INS_RD___VDMPY__RSS__RTT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vdmpy (R%d:R%d, R%d:R%d) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8800020) { + // Instruction: 14: 11101000100sssssPP0ttttt001ddddd | Rdd = vrmpybu (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRMPYBU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmpybu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8c00020) { + // Instruction: 14: 11101000110sssssPP0ttttt001ddddd | Rdd = vrmpybsu (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRMPYBSU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmpybsu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa800020) { + // Instruction: 14: 11101010100sssssPP0ttttt001xxxxx | Rxx += vrmpybu (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRMPYBU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrmpybu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xac00020) { + // Instruction: 14: 11101010110sssssPP0ttttt001xxxxx | Rxx += vrmpybsu (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRMPYBSU__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrmpybsu (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8a00020) { + // Instruction: 14: 11101000101sssssPP0ttttt001ddddd | Rdd = vdmpybsu (Rss, Rtt) :sat + hi->instruction = HEX_INS_RDD___VDMPYBSU__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vdmpybsu (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa200020) { + // Instruction: 14: 11101010001sssssPP0ttttt001xxxxx | Rxx += vdmpybsu (Rss, Rtt) :sat + hi->instruction = HEX_INS_RXX__PLUS_EQ__VDMPYBSU__RSS__RTT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vdmpybsu (R%d:R%d, R%d:R%d) :sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x80000c0) { + // Instruction: 14: 11101000N00sssssPP0ttttt110ddddd | Rdd = vmpyeh (Rss, Rtt) [:<instruction = HEX_INS_RDD___VMPYEH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyeh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa200040) { + // Instruction: 14: 11101010001sssssPP0ttttt010xxxxx | Rxx += vmpyeh (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VMPYEH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vmpyeh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xa0000c0) { + // Instruction: 14: 11101010N00sssssPP0ttttt110xxxxx | Rxx += vmpyeh (Rss, Rtt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYEH__RSS__RTT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyeh (R%d:R%d, R%d:R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x50000a0) { + // Instruction: 14: 11100101N00sssssPP0ttttt101ddddd | Rdd = vmpyh (Rs, Rt) [:<instruction = HEX_INS_RDD___VMPYH__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyh (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7200020) { + // Instruction: 14: 11100111001sssssPP0ttttt001xxxxx | Rxx += vmpyh (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VMPYH__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vmpyh (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x70000a0) { + // Instruction: 14: 11100111N00sssssPP0ttttt101xxxxx | Rxx += vmpyh (Rs, Rt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYH__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyh (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0xd2000e0) { + // Instruction: 14: 11101101N01sssssPP0ttttt111ddddd | Rd = vmpyh (Rs, Rt) [:<instruction = HEX_INS_RD___VMPYH__RS__RT______N__RND_SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vmpyh (R%d, R%d) %s:rnd:sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x50000e0) { + // Instruction: 14: 11100101N00sssssPP0ttttt111ddddd | Rdd = vmpyhsu (Rs, Rt) [:<instruction = HEX_INS_RDD___VMPYHSU__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d = vmpyhsu (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xf6020e0) == 0x76000a0) { + // Instruction: 14: 11100111N11sssssPP0ttttt101xxxxx | Rxx += vmpyhsu (Rs, Rt) [:<instruction = HEX_INS_RXX__PLUS_EQ__VMPYHSU__RS__RT______N__SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + if ((((hi_u32) & 0x800000) >> 23)) { + hi->pf |= HEX_PF_LSH1; // [:<<1] + } + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d:R%d += vmpyhsu (R%d, R%d) %s:sat", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg, (hi->pf & HEX_PF_LSH1 == HEX_PF_LSH1) ? ":<<1" : ""); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x8000040) { + // Instruction: 14: 11101000000sssssPP0ttttt010ddddd | Rdd = vrmpyh (Rss, Rtt) + hi->instruction = HEX_INS_RDD___VRMPYH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vrmpyh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0xa000040) { + // Instruction: 14: 11101010000sssssPP0ttttt010xxxxx | Rxx += vrmpyh (Rss, Rtt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VRMPYH__RSS__RTT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].attr |= HEX_OP_REG_PAIR; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vrmpyh (R%d:R%d, R%d:R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg + 1, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5400020) { + // Instruction: 14: 11100101010sssssPP0ttttt001ddddd | Rdd = vmpybsu (Rs, Rt) + hi->instruction = HEX_INS_RDD___VMPYBSU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmpybsu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5800020) { + // Instruction: 14: 11100101100sssssPP0ttttt001ddddd | Rdd = vmpybu (Rs, Rt) + hi->instruction = HEX_INS_RDD___VMPYBU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vmpybu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7800020) { + // Instruction: 14: 11100111100sssssPP0ttttt001xxxxx | Rxx += vmpybu (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VMPYBU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vmpybu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7c00020) { + // Instruction: 14: 11100111110sssssPP0ttttt001xxxxx | Rxx += vmpybsu (Rs, Rt) + hi->instruction = HEX_INS_RXX__PLUS_EQ__VMPYBSU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d += vmpybsu (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x5c000e0) { + // Instruction: 14: 11100101110sssssPP0ttttt111ddddd | Rdd = vpmpyh (Rs, Rt) + hi->instruction = HEX_INS_RDD___VPMPYH__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = vpmpyh (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe020e0) == 0x7a000e0) { + // Instruction: 14: 11100111101sssssPP0ttttt111xxxxx | Rxx ^= vpmpyh (Rs, Rt) + hi->instruction = HEX_INS_RXX____VPMPYH__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d ^= vpmpyh (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + break; + } + case 0xf: { + if ((hi_u32 & 0xfe00000) == 0x3000000) { + // Instruction: 15: 11110011000sssssPP-ttttt---ddddd | Rd = add (Rs, Rt) + hi->instruction = HEX_INS_RD___ADD__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = add (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6400000) { + // Instruction: 15: 11110110010sssssPP-ttttt---ddddd | Rd = add (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___ADD__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = add (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1000000) { + // Instruction: 15: 11110001000sssssPP-ttttt---ddddd | Rd = and (Rs, Rt) + hi->instruction = HEX_INS_RD___AND__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = and (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1200000) { + // Instruction: 15: 11110001001sssssPP-ttttt---ddddd | Rd = or (Rs, Rt) + hi->instruction = HEX_INS_RD___OR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = or (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1600000) { + // Instruction: 15: 11110001011sssssPP-ttttt---ddddd | Rd = xor (Rs, Rt) + hi->instruction = HEX_INS_RD___XOR__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = xor (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1800000) { + // Instruction: 15: 11110001100sssssPP-ttttt---ddddd | Rd = and (Rt, ~Rs) + hi->instruction = HEX_INS_RD___AND__RT___RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = and (R%d, ~R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x1a00000) { + // Instruction: 15: 11110001101sssssPP-ttttt---ddddd | Rd = or (Rt, ~Rs) + hi->instruction = HEX_INS_RD___OR__RT___RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = or (R%d, ~R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3200000) { + // Instruction: 15: 11110011001sssssPP-ttttt---ddddd | Rd = sub (Rt, Rs) + hi->instruction = HEX_INS_RD___SUB__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = sub (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6c00000) { + // Instruction: 15: 11110110110sssssPP-ttttt---ddddd | Rd = sub (Rt, Rs) :sat + hi->instruction = HEX_INS_RD___SUB__RT__RS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = sub (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6000000) { + // Instruction: 15: 11110110000sssssPP-ttttt---ddddd | Rd = vaddh (Rs, Rt) + hi->instruction = HEX_INS_RD___VADDH__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vaddh (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6200000) { + // Instruction: 15: 11110110001sssssPP-ttttt---ddddd | Rd = vaddh (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___VADDH__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vaddh (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6600000) { + // Instruction: 15: 11110110011sssssPP-ttttt---ddddd | Rd = vadduh (Rs, Rt) :sat + hi->instruction = HEX_INS_RD___VADDUH__RS__RT___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vadduh (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf600000) == 0x7000000) { + // Instruction: 15: 11110111-00sssssPP-ttttt---ddddd | Rd = vavgh (Rs, Rt) + hi->instruction = HEX_INS_RD___VAVGH__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vavgh (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf600000) == 0x7200000) { + // Instruction: 15: 11110111-01sssssPP-ttttt---ddddd | Rd = vavgh (Rs, Rt) :rnd + hi->instruction = HEX_INS_RD___VAVGH__RS__RT___RND; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_RND; // :rnd + sprintf(hi->mnem, "R%d = vavgh (R%d, R%d) :rnd", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf600000) == 0x7600000) { + // Instruction: 15: 11110111-11sssssPP-ttttt---ddddd | Rd = vnavgh (Rt, Rs) + hi->instruction = HEX_INS_RD___VNAVGH__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vnavgh (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6800000) { + // Instruction: 15: 11110110100sssssPP-ttttt---ddddd | Rd = vsubh (Rt, Rs) + hi->instruction = HEX_INS_RD___VSUBH__RT__RS_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = vsubh (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6a00000) { + // Instruction: 15: 11110110101sssssPP-ttttt---ddddd | Rd = vsubh (Rt, Rs) :sat + hi->instruction = HEX_INS_RD___VSUBH__RT__RS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vsubh (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x6e00000) { + // Instruction: 15: 11110110111sssssPP-ttttt---ddddd | Rd = vsubuh (Rt, Rs) :sat + hi->instruction = HEX_INS_RD___VSUBUH__RT__RS___SAT; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + hi->pf |= HEX_PF_SAT; // :sat + sprintf(hi->mnem, "R%d = vsubuh (R%d, R%d) :sat", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3800000) { + // Instruction: 15: 11110011100sssssPP-ttttt---ddddd | Rd = combine (Rt.H, Rs.H) + hi->instruction = HEX_INS_RD___COMBINE__RT_H__RS_H_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = combine (R%d.H, R%d.H)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3a00000) { + // Instruction: 15: 11110011101sssssPP-ttttt---ddddd | Rd = combine (Rt.H, Rs.L) + hi->instruction = HEX_INS_RD___COMBINE__RT_H__RS_L_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = combine (R%d.H, R%d.L)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3c00000) { + // Instruction: 15: 11110011110sssssPP-ttttt---ddddd | Rd = combine (Rt.L, Rs.H) + hi->instruction = HEX_INS_RD___COMBINE__RT_L__RS_H_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = combine (R%d.L, R%d.H)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3e00000) { + // Instruction: 15: 11110011111sssssPP-ttttt---ddddd | Rd = combine (Rt.L, Rs.L) + hi->instruction = HEX_INS_RD___COMBINE__RT_L__RS_L_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = combine (R%d.L, R%d.L)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0x5000000) { + // Instruction: 15: 111101010--sssssPP-ttttt---ddddd | Rdd = combine (Rs, Rt) + hi->instruction = HEX_INS_RDD___COMBINE__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = combine (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf000000) == 0x4000000) { + // Instruction: 15: 11110100---sssssPP-ttttt-uuddddd | Rd = mux (Pu, Rs, Rt) + hi->instruction = HEX_INS_RD___MUX__PU__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_PREDICATE; + hi->ops[1].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = mux (P%d, R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.pred, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf800000) == 0x5800000) { + // Instruction: 15: 111101011--sssssPP-ttttt---ddddd | Rdd = packhl (Rs, Rt) + hi->instruction = HEX_INS_RDD___PACKHL__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].attr |= HEX_OP_REG_PAIR; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d:R%d = packhl (R%d, R%d)", hi->ops[0].op.reg + 1, hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb000000) { + // Instruction: 15: 111110110-0sssssPP0ttttt0uuddddd | if (Pu) Rd = add (Rs, Rt) + hi->instruction = HEX_INS_IF__PU__RD___ADD__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = add (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb000080) { + // Instruction: 15: 111110110-0sssssPP0ttttt1uuddddd | if !Pu Rd = add (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_RD___ADD__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = add (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb002000) { + // Instruction: 15: 111110110-0sssssPP1ttttt0uuddddd | if (Pu.new) Rd = add (Rs, Rt) + hi->instruction = HEX_INS_IF__PU_NEW__RD___ADD__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = add (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb002080) { + // Instruction: 15: 111110110-0sssssPP1ttttt1uuddddd | if !Pu.new Rd = add (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___ADD__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = add (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf002080) == 0xd000000) { + // Instruction: 15: 11111101---sssssPP0ttttt0uuddddd | if (Pu) Rdd = combine (Rs, Rt) + hi->instruction = HEX_INS_IF__PU__RDD___COMBINE__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d:R%d = combine (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf002080) == 0xd000080) { + // Instruction: 15: 11111101---sssssPP0ttttt1uuddddd | if !Pu Rdd = combine (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_RDD___COMBINE__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d:R%d = combine (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf002080) == 0xd002000) { + // Instruction: 15: 11111101---sssssPP1ttttt0uuddddd | if (Pu.new) Rdd = combine (Rs, Rt) + hi->instruction = HEX_INS_IF__PU_NEW__RDD___COMBINE__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d:R%d = combine (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf002080) == 0xd002080) { + // Instruction: 15: 11111101---sssssPP1ttttt1uuddddd | if !Pu.new Rdd = combine (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RDD___COMBINE__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].attr |= HEX_OP_REG_PAIR; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d:R%d = combine (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg + 1, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9000000) { + // Instruction: 15: 11111001-00sssssPP0ttttt0uuddddd | if (Pu) Rd = and (Rs, Rt) + hi->instruction = HEX_INS_IF__PU__RD___AND__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = and (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9000080) { + // Instruction: 15: 11111001-00sssssPP0ttttt1uuddddd | if !Pu Rd = and (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_RD___AND__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = and (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9002000) { + // Instruction: 15: 11111001-00sssssPP1ttttt0uuddddd | if (Pu.new) Rd = and (Rs, Rt) + hi->instruction = HEX_INS_IF__PU_NEW__RD___AND__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = and (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9002080) { + // Instruction: 15: 11111001-00sssssPP1ttttt1uuddddd | if !Pu.new Rd = and (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___AND__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = and (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9200000) { + // Instruction: 15: 11111001-01sssssPP0ttttt0uuddddd | if (Pu) Rd = or (Rs, Rt) + hi->instruction = HEX_INS_IF__PU__RD___OR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = or (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9200080) { + // Instruction: 15: 11111001-01sssssPP0ttttt1uuddddd | if !Pu Rd = or (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_RD___OR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = or (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9202000) { + // Instruction: 15: 11111001-01sssssPP1ttttt0uuddddd | if (Pu.new) Rd = or (Rs, Rt) + hi->instruction = HEX_INS_IF__PU_NEW__RD___OR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = or (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9202080) { + // Instruction: 15: 11111001-01sssssPP1ttttt1uuddddd | if !Pu.new Rd = or (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___OR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = or (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9600000) { + // Instruction: 15: 11111001-11sssssPP0ttttt0uuddddd | if (Pu) Rd = xor (Rs, Rt) + hi->instruction = HEX_INS_IF__PU__RD___XOR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = xor (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9600080) { + // Instruction: 15: 11111001-11sssssPP0ttttt1uuddddd | if !Pu Rd = xor (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_RD___XOR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = xor (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9602000) { + // Instruction: 15: 11111001-11sssssPP1ttttt0uuddddd | if (Pu.new) Rd = xor (Rs, Rt) + hi->instruction = HEX_INS_IF__PU_NEW__RD___XOR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = xor (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf602080) == 0x9602080) { + // Instruction: 15: 11111001-11sssssPP1ttttt1uuddddd | if !Pu.new Rd = xor (Rs, Rt) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___XOR__RS__RT_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = xor (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb200000) { + // Instruction: 15: 111110110-1sssssPP0ttttt0uuddddd | if (Pu) Rd = sub (Rt, Rs) + hi->instruction = HEX_INS_IF__PU__RD___SUB__RT__RS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE; // if (Pu) + sprintf(hi->mnem, "if (P%d) R%d = sub (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb200080) { + // Instruction: 15: 111110110-1sssssPP0ttttt1uuddddd | if !Pu Rd = sub (Rt, Rs) + hi->instruction = HEX_INS_IF__NOT_PU_RD___SUB__RT__RS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE; // if !Pu + sprintf(hi->mnem, "if !P%d R%d = sub (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb202000) { + // Instruction: 15: 111110110-1sssssPP1ttttt0uuddddd | if (Pu.new) Rd = sub (Rt, Rs) + hi->instruction = HEX_INS_IF__PU_NEW__RD___SUB__RT__RS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_TRUE_NEW; // if (Pu.new) + sprintf(hi->mnem, "if (P%d.new) R%d = sub (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xfa02080) == 0xb202080) { + // Instruction: 15: 111110110-1sssssPP1ttttt1uuddddd | if !Pu.new Rd = sub (Rt, Rs) + hi->instruction = HEX_INS_IF__NOT_PU_NEW_RD___SUB__RT__RS_; + hi->op_count = 4; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x60) >> 5); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->ops[3].type = HEX_OP_TYPE_REG; + hi->ops[3].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->predicate = HEX_PRED_FALSE_NEW; // if !Pu.new + sprintf(hi->mnem, "if !P%d.new R%d = sub (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg, hi->ops[3].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2000000) { + // Instruction: 15: 11110010-00sssssPP-ttttt---000dd | Pd = cmp.eq (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.eq (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2000010) { + // Instruction: 15: 11110010-00sssssPP-ttttt---100dd | Pd = !cmp.eq (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_CMP_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !cmp.eq (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2400000) { + // Instruction: 15: 11110010-10sssssPP-ttttt---000dd | Pd = cmp.gt (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_GT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gt (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2400010) { + // Instruction: 15: 11110010-10sssssPP-ttttt---100dd | Pd = !cmp.gt (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_CMP_GT__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !cmp.gt (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2600000) { + // Instruction: 15: 11110010-11sssssPP-ttttt---000dd | Pd = cmp.gtu (Rs, Rt) + hi->instruction = HEX_INS_PD___CMP_GTU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = cmp.gtu (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xf60001c) == 0x2600010) { + // Instruction: 15: 11110010-11sssssPP-ttttt---100dd | Pd = !cmp.gtu (Rs, Rt) + hi->instruction = HEX_INS_PD____NOT_CMP_GTU__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_PREDICATE; + hi->ops[0].op.pred = (((hi_u32) & 0x3) >> 0); + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "P%d = !cmp.gtu (R%d, R%d)", hi->ops[0].op.pred, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3400000) { + // Instruction: 15: 11110011010sssssPP-ttttt---ddddd | Rd = cmp.eq (Rs, Rt) + hi->instruction = HEX_INS_RD___CMP_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = cmp.eq (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + if ((hi_u32 & 0xfe00000) == 0x3600000) { + // Instruction: 15: 11110011011sssssPP-ttttt---ddddd | Rd = !cmp.eq (Rs, Rt) + hi->instruction = HEX_INS_RD____NOT_CMP_EQ__RS__RT_; + hi->op_count = 3; + hi->ops[0].type = HEX_OP_TYPE_REG; + hi->ops[0].op.reg = (((hi_u32) & 0x1f) >> 0); // Rd + hi->ops[1].type = HEX_OP_TYPE_REG; + hi->ops[1].op.reg = (((hi_u32) & 0x1f0000) >> 16); // Rs + hi->ops[2].type = HEX_OP_TYPE_REG; + hi->ops[2].op.reg = (((hi_u32) & 0x1f00) >> 8); // Rt + hi->predicate = HEX_NOPRED; + sprintf(hi->mnem, "R%d = !cmp.eq (R%d, R%d)", hi->ops[0].op.reg, hi->ops[1].op.reg, hi->ops[2].op.reg); + break; + } + break; + } + } + } + return 4; +} diff --git a/libr/asm/arch/hexagon/hexagon_insn.h b/libr/asm/arch/hexagon/hexagon_insn.h new file mode 100644 index 0000000000..713e7d4b07 --- /dev/null +++ b/libr/asm/arch/hexagon/hexagon_insn.h @@ -0,0 +1,2802 @@ +enum HEX_INS { + HEX_INS_UNKNOWN, + HEX_INS_IMMEXT, + HEX_INS_RD___ADD__RS___S16_, + HEX_INS_RD___ADD__RS__RT_, + HEX_INS_RD___ADD__RS__RT___SAT, + HEX_INS_RD___AND__RS___S10_, + HEX_INS_RD___OR__RS___S10_, + HEX_INS_RD___AND__RS__RT_, + HEX_INS_RD___OR__RS__RT_, + HEX_INS_RD___XOR__RS__RT_, + HEX_INS_RD___AND__RT___RS_, + HEX_INS_RD___OR__RT___RS_, + HEX_INS_NOP, + HEX_INS_RD___SUB___S10__RS_, + HEX_INS_RD___SUB__RT__RS_, + HEX_INS_RD___SUB__RT__RS___SAT, + HEX_INS_RD___SXTB__RS_, + HEX_INS_RD___SXTH__RS_, + HEX_INS_RX_L____U16, + HEX_INS_RX_H____U16, + HEX_INS_RD____S16, + HEX_INS_RD___RS, + HEX_INS_RD___VADDH__RS__RT_, + HEX_INS_RD___VADDH__RS__RT___SAT, + HEX_INS_RD___VADDUH__RS__RT___SAT, + HEX_INS_RD___VAVGH__RS__RT_, + HEX_INS_RD___VAVGH__RS__RT___RND, + HEX_INS_RD___VNAVGH__RT__RS_, + HEX_INS_RD___VSUBH__RT__RS_, + HEX_INS_RD___VSUBH__RT__RS___SAT, + HEX_INS_RD___VSUBUH__RT__RS___SAT, + HEX_INS_RD___ZXTH__RS_, + HEX_INS_RDD___COMBINE__RS___S8_, + HEX_INS_RDD___COMBINE___S8__RS_, + HEX_INS_RDD___COMBINE___S8___S8_, + HEX_INS_RDD___COMBINE___S8___U6_, + HEX_INS_RD___COMBINE__RT_H__RS_H_, + HEX_INS_RD___COMBINE__RT_H__RS_L_, + HEX_INS_RD___COMBINE__RT_L__RS_H_, + HEX_INS_RD___COMBINE__RT_L__RS_L_, + HEX_INS_RDD___COMBINE__RS__RT_, + HEX_INS_RD___MUX__PU__RS___S8_, + HEX_INS_RD___MUX__PU___S8__RS_, + HEX_INS_RD___MUX__PU___S8___S8_, + HEX_INS_RD___MUX__PU__RS__RT_, + HEX_INS_RD___ASLH__RS_, + HEX_INS_RD___ASRH__RS_, + HEX_INS_RDD___PACKHL__RS__RT_, + HEX_INS_IF__PU__RD___ADD__RS___S8_, + HEX_INS_IF__PU_NEW__RD___ADD__RS___S8_, + HEX_INS_IF__NOT_PU_RD___ADD__RS___S8_, + HEX_INS_IF__NOT_PU_NEW_RD___ADD__RS___S8_, + HEX_INS_IF__PU__RD___ADD__RS__RT_, + HEX_INS_IF__NOT_PU_RD___ADD__RS__RT_, + HEX_INS_IF__PU_NEW__RD___ADD__RS__RT_, + HEX_INS_IF__NOT_PU_NEW_RD___ADD__RS__RT_, + HEX_INS_IF__PU__RD___ASLH__RS_, + HEX_INS_IF__PU_NEW__RD___ASLH__RS_, + HEX_INS_IF__NOT_PU_RD___ASLH__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___ASLH__RS_, + HEX_INS_IF__PU__RD___ASRH__RS_, + HEX_INS_IF__PU_NEW__RD___ASRH__RS_, + HEX_INS_IF__NOT_PU_RD___ASRH__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___ASRH__RS_, + HEX_INS_IF__PU__RDD___COMBINE__RS__RT_, + HEX_INS_IF__NOT_PU_RDD___COMBINE__RS__RT_, + HEX_INS_IF__PU_NEW__RDD___COMBINE__RS__RT_, + HEX_INS_IF__NOT_PU_NEW_RDD___COMBINE__RS__RT_, + HEX_INS_IF__PU__RD___AND__RS__RT_, + HEX_INS_IF__NOT_PU_RD___AND__RS__RT_, + HEX_INS_IF__PU_NEW__RD___AND__RS__RT_, + HEX_INS_IF__NOT_PU_NEW_RD___AND__RS__RT_, + HEX_INS_IF__PU__RD___OR__RS__RT_, + HEX_INS_IF__NOT_PU_RD___OR__RS__RT_, + HEX_INS_IF__PU_NEW__RD___OR__RS__RT_, + HEX_INS_IF__NOT_PU_NEW_RD___OR__RS__RT_, + HEX_INS_IF__PU__RD___XOR__RS__RT_, + HEX_INS_IF__NOT_PU_RD___XOR__RS__RT_, + HEX_INS_IF__PU_NEW__RD___XOR__RS__RT_, + HEX_INS_IF__NOT_PU_NEW_RD___XOR__RS__RT_, + HEX_INS_IF__PU__RD___SUB__RT__RS_, + HEX_INS_IF__NOT_PU_RD___SUB__RT__RS_, + HEX_INS_IF__PU_NEW__RD___SUB__RT__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___SUB__RT__RS_, + HEX_INS_IF__PU__RD___SXTB__RS_, + HEX_INS_IF__PU_NEW__RD___SXTB__RS_, + HEX_INS_IF__NOT_PU_RD___SXTB__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___SXTB__RS_, + HEX_INS_IF__PU__RD___SXTH__RS_, + HEX_INS_IF__PU_NEW__RD___SXTH__RS_, + HEX_INS_IF__NOT_PU_RD___SXTH__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___SXTH__RS_, + HEX_INS_IF__PU__RD____S12, + HEX_INS_IF__PU_NEW__RD____S12, + HEX_INS_IF__NOT_PU_RD____S12, + HEX_INS_IF__NOT_PU_NEW_RD____S12, + HEX_INS_IF__PU__RD___ZXTB__RS_, + HEX_INS_IF__PU_NEW__RD___ZXTB__RS_, + HEX_INS_IF__NOT_PU_RD___ZXTB__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___ZXTB__RS_, + HEX_INS_IF__PU__RD___ZXTH__RS_, + HEX_INS_IF__PU_NEW__RD___ZXTH__RS_, + HEX_INS_IF__NOT_PU_RD___ZXTH__RS_, + HEX_INS_IF__NOT_PU_NEW_RD___ZXTH__RS_, + HEX_INS_PD___CMP_EQ__RS___S10_, + HEX_INS_PD____NOT_CMP_EQ__RS___S10_, + HEX_INS_PD___CMP_GT__RS___S10_, + HEX_INS_PD____NOT_CMP_GT__RS___S10_, + HEX_INS_PD___CMP_GTU__RS___U9_, + HEX_INS_PD____NOT_CMP_GTU__RS___U9_, + HEX_INS_PD___CMP_EQ__RS__RT_, + HEX_INS_PD____NOT_CMP_EQ__RS__RT_, + HEX_INS_PD___CMP_GT__RS__RT_, + HEX_INS_PD____NOT_CMP_GT__RS__RT_, + HEX_INS_PD___CMP_GTU__RS__RT_, + HEX_INS_PD____NOT_CMP_GTU__RS__RT_, + HEX_INS_RD___CMP_EQ__RS___S8_, + HEX_INS_RD____NOT_CMP_EQ__RS___S8_, + HEX_INS_RD___CMP_EQ__RS__RT_, + HEX_INS_RD____NOT_CMP_EQ__RS__RT_, + HEX_INS_PD___FASTCORNER9__PS__PT_, + HEX_INS_PD____NOT_FASTCORNER9__PS__PT_, + HEX_INS_PD___ANY8__PS_, + HEX_INS_PD___ALL8__PS_, + HEX_INS_LOOP0___R7_2__RS_, + HEX_INS_LOOP1___R7_2__RS_, + HEX_INS_LOOP0___R7_2___U10_, + HEX_INS_LOOP1___R7_2___U10_, + HEX_INS_RD___ADD__PC___U6_, + HEX_INS_P3___SP1LOOP0___R7_2__RS_, + HEX_INS_P3___SP2LOOP0___R7_2__RS_, + HEX_INS_P3___SP3LOOP0___R7_2__RS_, + HEX_INS_P3___SP1LOOP0___R7_2___U10_, + HEX_INS_P3___SP2LOOP0___R7_2___U10_, + HEX_INS_P3___SP3LOOP0___R7_2___U10_, + HEX_INS_PD___AND__PT__PS_, + HEX_INS_PD___AND__PS__AND__PT__PU__, + HEX_INS_PD___OR__PT__PS_, + HEX_INS_PD___AND__PS__OR__PT__PU__, + HEX_INS_PD___XOR__PS__PT_, + HEX_INS_PD___OR__PS__AND__PT__PU__, + HEX_INS_PD___AND__PT___NOT_PS_, + HEX_INS_PD___OR__PS__OR__PT__PU__, + HEX_INS_PD___AND__PS__AND__PT___NOT_PU__, + HEX_INS_PD___AND__PS__OR__PT___NOT_PU__, + HEX_INS_PD___NOT__PS_, + HEX_INS_PD___OR__PS__AND__PT___NOT_PU__, + HEX_INS_PD___OR__PT___NOT_PS_, + HEX_INS_PD___OR__PS__OR__PT___NOT_PU__, + HEX_INS_CD___RS, + HEX_INS_CDD___RSS, + HEX_INS_RDD___CSS, + HEX_INS_RD___CS, + HEX_INS_CALLR_RS, + HEX_INS_IF__PU__CALLR_RS, + HEX_INS_IF__NOT_PU_CALLR_RS, + HEX_INS_HINTJR__RS_, + HEX_INS_JUMPR_RS, + HEX_INS_IF__PU__JUMPR_NT_RS, + HEX_INS_IF__PU_NEW__JUMPR_NT_RS, + HEX_INS_IF__PU__JUMPR_T_RS, + HEX_INS_IF__PU_NEW__JUMPR_T_RS, + HEX_INS_IF__NOT_PU_JUMPR_NT_RS, + HEX_INS_IF__NOT_PU_NEW_JUMPR_NT_RS, + HEX_INS_IF__NOT_PU_JUMPR_T_RS, + HEX_INS_IF__NOT_PU_NEW_JUMPR_T_RS, + HEX_INS_CALL__R22_2, + HEX_INS_IF__PU__CALL__R15_2, + HEX_INS_IF__NOT_PU_CALL__R15_2, + HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS____1____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS____1____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___TSTBIT__RS___0____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS____1____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___TSTBIT__RS___0____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS___U5____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS___U5____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS____1____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS____1____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___TSTBIT__RS___0____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS____1____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___TSTBIT__RS___0____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS___U5____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS___U5____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_EQ__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_EQ__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS__RT____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS__RT____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GT__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GT__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF__P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF__P1_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_NT__R9_2, + HEX_INS_MULT_P0___CMP_GTU__RS__RT____IF___NOT_P0_NEW__JUMP_T__R9_2, + HEX_INS_MULT_P1___CMP_GTU__RS__RT____IF___NOT_P1_NEW__JUMP_T__R9_2, + HEX_INS_JUMP__R22_2, + HEX_INS_IF__PU__JUMP_NT__R15_2, + HEX_INS_IF__PU__JUMP_T__R15_2, + HEX_INS_IF__NOT_PU_JUMP_NT__R15_2, + HEX_INS_IF__NOT_PU_JUMP_T__R15_2, + HEX_INS_IF__PU_NEW__JUMP_NT__R15_2, + HEX_INS_IF__PU_NEW__JUMP_T__R15_2, + HEX_INS_IF__NOT_PU_NEW_JUMP_NT__R15_2, + HEX_INS_IF__NOT_PU_NEW_JUMP_T__R15_2, + HEX_INS_IF__RS__NOT____0__JUMP_NT__R13_2, + HEX_INS_IF__RS__NOT____0__JUMP_T__R13_2, + HEX_INS_IF__RS_GT_EQ___0__JUMP_NT__R13_2, + HEX_INS_IF__RS_GT_EQ___0__JUMP_T__R13_2, + HEX_INS_IF__RS__EQ___0__JUMP_NT__R13_2, + HEX_INS_IF__RS__EQ___0__JUMP_T__R13_2, + HEX_INS_IF__RS_LT_EQ___0__JUMP_NT__R13_2, + HEX_INS_IF__RS_LT_EQ___0__JUMP_T__R13_2, + HEX_INS_MULT_RD____U6___JUMP__R9_2, + HEX_INS_MULT_RD___RS___JUMP__R9_2, + HEX_INS_RDD___MEMD__RS___RT_____U2_, + HEX_INS_RDD___MEMD__GP____U16_3_, + HEX_INS_RDD___MEMD__RS____S11_3_, + HEX_INS_RDD___MEMD__RX_____S4_3_CIRC__MU__, + HEX_INS_RDD___MEMD__RX____I_CIRC__MU__, + HEX_INS_RDD___MEMD__RE____U6_, + HEX_INS_RDD___MEMD__RX_____S4_3_, + HEX_INS_RDD___MEMD__RT_____U2____U6_, + HEX_INS_RDD___MEMD__RX____MU_, + HEX_INS_RDD___MEMD__RX____MU_BREV_, + HEX_INS_IF__PV__RDD___MEMD__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RDD___MEMD__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RDD___MEMD__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RDD___MEMD__RS___RT_____U2_, + HEX_INS_IF__PT__RDD___MEMD__RS____U6_3_, + HEX_INS_IF__PT_NEW__RDD___MEMD__RS____U6_3_, + HEX_INS_IF__NOT_PT_RDD___MEMD__RS____U6_3_, + HEX_INS_IF__NOT_PT_NEW_RDD___MEMD__RS____U6_3_, + HEX_INS_IF__PT__RDD___MEMD__RX_____S4_3_, + HEX_INS_IF__NOT_PT_RDD___MEMD__RX_____S4_3_, + HEX_INS_IF__PT_NEW__RDD___MEMD__RX_____S4_3_, + HEX_INS_IF__NOT_PT_NEW_RDD___MEMD__RX_____S4_3_, + HEX_INS_IF__PT__RDD___MEMD___U6_, + HEX_INS_IF__NOT_PT_RDD___MEMD___U6_, + HEX_INS_IF__PT_NEW__RDD___MEMD___U6_, + HEX_INS_IF__NOT_PT_NEW_RDD___MEMD___U6_, + HEX_INS_RD___MEMB__RS___RT_____U2_, + HEX_INS_RD___MEMB__GP____U16_0_, + HEX_INS_RD___MEMB__RS____S11_0_, + HEX_INS_RD___MEMB__RX_____S4_0_CIRC__MU__, + HEX_INS_RD___MEMB__RX____I_CIRC__MU__, + HEX_INS_RD___MEMB__RE____U6_, + HEX_INS_RD___MEMB__RX_____S4_0_, + HEX_INS_RD___MEMB__RT_____U2____U6_, + HEX_INS_RD___MEMB__RX____MU_, + HEX_INS_RD___MEMB__RX____MU_BREV_, + HEX_INS_IF__PV__RD___MEMB__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RD___MEMB__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RD___MEMB__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RD___MEMB__RS___RT_____U2_, + HEX_INS_IF__PT__RD___MEMB__RS____U6_0_, + HEX_INS_IF__PT_NEW__RD___MEMB__RS____U6_0_, + HEX_INS_IF__NOT_PT_RD___MEMB__RS____U6_0_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMB__RS____U6_0_, + HEX_INS_IF__PT__RD___MEMB__RX_____S4_0_, + HEX_INS_IF__NOT_PT_RD___MEMB__RX_____S4_0_, + HEX_INS_IF__PT_NEW__RD___MEMB__RX_____S4_0_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMB__RX_____S4_0_, + HEX_INS_IF__PT__RD___MEMB___U6_, + HEX_INS_IF__NOT_PT_RD___MEMB___U6_, + HEX_INS_IF__PT_NEW__RD___MEMB___U6_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMB___U6_, + HEX_INS_RYY___MEMB_FIFO__RS____S11_0_, + HEX_INS_RYY___MEMB_FIFO__RX_____S4_0_CIRC__MU__, + HEX_INS_RYY___MEMB_FIFO__RX____I_CIRC__MU__, + HEX_INS_RYY___MEMB_FIFO__RE____U6_, + HEX_INS_RYY___MEMB_FIFO__RX_____S4_0_, + HEX_INS_RYY___MEMB_FIFO__RT_____U2____U6_, + HEX_INS_RYY___MEMB_FIFO__RX____MU_, + HEX_INS_RYY___MEMB_FIFO__RX____MU_BREV_, + HEX_INS_RYY___MEMH_FIFO__RS____S11_1_, + HEX_INS_RYY___MEMH_FIFO__RX_____S4_1_CIRC__MU__, + HEX_INS_RYY___MEMH_FIFO__RX____I_CIRC__MU__, + HEX_INS_RYY___MEMH_FIFO__RE____U6_, + HEX_INS_RYY___MEMH_FIFO__RX_____S4_1_, + HEX_INS_RYY___MEMH_FIFO__RT_____U2____U6_, + HEX_INS_RYY___MEMH_FIFO__RX____MU_, + HEX_INS_RYY___MEMH_FIFO__RX____MU_BREV_, + HEX_INS_RD___MEMH__RS___RT_____U2_, + HEX_INS_RD___MEMH__GP____U16_1_, + HEX_INS_RD___MEMH__RS____S11_1_, + HEX_INS_RD___MEMH__RX_____S4_1_CIRC__MU__, + HEX_INS_RD___MEMH__RX____I_CIRC__MU__, + HEX_INS_RD___MEMH__RE____U6_, + HEX_INS_RD___MEMH__RX_____S4_1_, + HEX_INS_RD___MEMH__RT_____U2____U6_, + HEX_INS_RD___MEMH__RX____MU_, + HEX_INS_RD___MEMH__RX____MU_BREV_, + HEX_INS_IF__PV__RD___MEMH__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RD___MEMH__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RD___MEMH__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RD___MEMH__RS___RT_____U2_, + HEX_INS_IF__PT__RD___MEMH__RS____U6_1_, + HEX_INS_IF__PT_NEW__RD___MEMH__RS____U6_1_, + HEX_INS_IF__NOT_PT_RD___MEMH__RS____U6_1_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMH__RS____U6_1_, + HEX_INS_IF__PT__PD___MEMH__RX_____S4_1_, + HEX_INS_IF__NOT_PT_RD___MEMH__RX_____S4_1_, + HEX_INS_IF__PT_NEW__RD___MEMH__RX_____S4_1_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMH__RX_____S4_1_, + HEX_INS_IF__PT__RD___MEMH___U6_, + HEX_INS_IF__NOT_PT_RD___MEMH___U6_, + HEX_INS_IF__PT_NEW__RD___MEMH___U6_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMH___U6_, + HEX_INS_RD___MEMUB__RS___RT_____U2_, + HEX_INS_RD___MEMUB__GP____U16_0_, + HEX_INS_RD___MEMUB__RS____S11_0_, + HEX_INS_RD___MEMUB__RX_____S4_0_CIRC__MU__, + HEX_INS_RD___MEMUB__RX____I_CIRC__MU__, + HEX_INS_RD___MEMUB__RE____U6_, + HEX_INS_RD___MEMUB__RX_____S4_0_, + HEX_INS_RD___MEMUB__RT_____U2____U6_, + HEX_INS_RD___MEMUB__RX____MU_, + HEX_INS_RD___MEMUB__RX____MU_BREV_, + HEX_INS_IF__PV__RD___MEMUB__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RD___MEMUB__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RD___MEMUB__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RD___MEMUB__RS___RT_____U2_, + HEX_INS_IF__PT__RD___MEMUB__RS____U6_0_, + HEX_INS_IF__PT_NEW__RD___MEMUB__RS____U6_0_, + HEX_INS_IF__NOT_PT_RD___MEMUB__RS____U6_0_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUB__RS____U6_0_, + HEX_INS_IF__PT__RD___MEMUB__RX_____S4_0_, + HEX_INS_IF__NOT_PT_RD___MEMUB__RX_____S4_0_, + HEX_INS_IF__PT_NEW__RD___MEMUB__RX_____S4_0_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUB__RX_____S4_0_, + HEX_INS_IF__PT__RD___MEMUB___U6_, + HEX_INS_IF__NOT_PT_RD___MEMUB___U6_, + HEX_INS_IF__PT_NEW__RD___MEMUB___U6_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUB___U6_, + HEX_INS_RD___MEMUH__RS___RT_____U2_, + HEX_INS_RD___MEMUH__GP____U16_1_, + HEX_INS_RD___MEMUH__RS____S11_1_, + HEX_INS_RD___MEMUH__RX_____S4_1_CIRC__MU__, + HEX_INS_RD___MEMUH__RX____I_CIRC__MU__, + HEX_INS_RD___MEMUH__RE____U6_, + HEX_INS_RD___MEMUH__RX_____S4_1_, + HEX_INS_RD___MEMUH__RT_____U2____U6_, + HEX_INS_RD___MEMUH__RX____MU_, + HEX_INS_RD___MEMUH__RX____MU_BREV_, + HEX_INS_IF__PV__RD___MEMUH__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RD___MEMUH__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RD___MEMUH__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RD___MEMUH__RS___RT_____U2_, + HEX_INS_IF__PT__RD___MEMUH__RS____U6_1_, + HEX_INS_IF__PT_NEW__RD___MEMUH__RS____U6_1_, + HEX_INS_IF__NOT_PT_RD___MEMUH__RS____U6_1_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUH__RS____U6_1_, + HEX_INS_IF__PT__RD___MEMUH__RX_____S4_1_, + HEX_INS_IF__NOT_PT_RD___MEMUH__RX_____S4_1_, + HEX_INS_IF__PT_NEW__RD___MEMUH__RX_____S4_1_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUH__RX_____S4_1_, + HEX_INS_IF__PT__RD___MEMUH___U6_, + HEX_INS_IF__NOT_PT_RD___MEMUH___U6_, + HEX_INS_IF__PT_NEW__RD___MEMUH___U6_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMUH___U6_, + HEX_INS_RD___MEMW__RS___RT_____U2_, + HEX_INS_RD___MEMW__GP____U16_2_, + HEX_INS_RD___MEMW__RS____S11_2_, + HEX_INS_RD___MEMW__RX_____S4_2_CIRC__MU__, + HEX_INS_RD___MEMW__RX____I_CIRC__MU__, + HEX_INS_RD___MEMW__RE____U6_, + HEX_INS_RD___MEMW__RX_____S4_2_, + HEX_INS_RD___MEMW__RT_____U2____U6_, + HEX_INS_RD___MEMW__RX____MU_, + HEX_INS_RD___MEMW__RX____MU_BREV_, + HEX_INS_IF__PV__RD___MEMW__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_RD___MEMW__RS___RT_____U2_, + HEX_INS_IF__PV_NEW__RD___MEMW__RS___RT_____U2_, + HEX_INS_IF__NOT_PV_NEW_RD___MEMW__RS___RT_____U2_, + HEX_INS_IF__PT__RD___MEMW__RS____U6_2_, + HEX_INS_IF__PT_NEW__RD___MEMW__RS____U6_2_, + HEX_INS_IF__NOT_PT_RD___MEMW__RS____U6_2_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMW__RS____U6_2_, + HEX_INS_IF__PT__RD___MEMW__RX_____S4_2_, + HEX_INS_IF__NOT_PT_RD___MEMW__RX_____S4_2_, + HEX_INS_IF__PT_NEW__RD___MEMW__RX_____S4_2_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMW__RX_____S4_2_, + HEX_INS_IF__PT__RD___MEMW___U6_, + HEX_INS_IF__NOT_PT_RD___MEMW___U6_, + HEX_INS_IF__PT_NEW__RD___MEMW___U6_, + HEX_INS_IF__NOT_PT_NEW_RD___MEMW___U6_, + HEX_INS_DEALLOCFRAME, + HEX_INS_DEALLOC_RETURN, + HEX_INS_IF__PS_NEW__DEALLOC_RETURN_NT, + HEX_INS_IF__PS__DEALLOC_RETURN, + HEX_INS_IF__PS_NEW__DEALLOC_RETURN_T, + HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_NT, + HEX_INS_IF__NOT_PS_DEALLOC_RETURN, + HEX_INS_IF__NOT_PS_NEW_DEALLOC_RETURN_T, + HEX_INS_RD___MEMBH__RS____S11_1_, + HEX_INS_RD___MEMUBH__RS____S11_1_, + HEX_INS_RDD___MEMUBH__RS____S11_2_, + HEX_INS_RDD___MEMBH__RS____S11_2_, + HEX_INS_RD___MEMBH__RX_____S4_1_CIRC__MU__, + HEX_INS_RD___MEMBH__RX____I_CIRC__MU__, + HEX_INS_RD___MEMUBH__RX_____S4_1_CIRC__MU__, + HEX_INS_RD___MEMUBH__RX____I_CIRC__MU__, + HEX_INS_RDD___MEMUBH__RX_____S4_2_CIRC__MU__, + HEX_INS_RDD___MEMUBH__RX____I_CIRC__MU__, + HEX_INS_RDD___MEMBH__RX_____S4_2_CIRC__MU__, + HEX_INS_RDD___MEMBH__RX____I_CIRC__MU__, + HEX_INS_RD___MEMBH__RE____U6_, + HEX_INS_RD___MEMBH__RX_____S4_1_, + HEX_INS_RD___MEMUBH__RE____U6_, + HEX_INS_RD___MEMUBH__RX_____S4_1_, + HEX_INS_RDD___MEMUBH__RE____U6_, + HEX_INS_RDD___MEMUBH__RX_____S4_2_, + HEX_INS_RDD___MEMBH__RE____U6_, + HEX_INS_RDD___MEMBH__RX_____S4_2_, + HEX_INS_RD___MEMBH__RT_____U2____U6_, + HEX_INS_RD___MEMBH__RX____MU_, + HEX_INS_RD___MEMUBH__RT_____U2____U6_, + HEX_INS_RD___MEMUBH__RX____MU_, + HEX_INS_RDD___MEMUBH__RT_____U2____U6_, + HEX_INS_RDD___MEMUBH__RX____MU_, + HEX_INS_RDD___MEMBH__RT_____U2____U6_, + HEX_INS_RDD___MEMBH__RX____MU_, + HEX_INS_RD___MEMBH__RX____MU_BREV_, + HEX_INS_RD___MEMUBH__RX____MU_BREV_, + HEX_INS_RDD___MEMUBH__RX____MU_BREV_, + HEX_INS_RDD___MEMBH__RX____MU_BREV_, + HEX_INS_MEMB__RS____U6_0___PLUS_EQ__RT, + HEX_INS_MEMB__RS____U6_0___MINUS_EQ__RT, + HEX_INS_MEMB__RS____U6_0___AND_EQ__RT, + HEX_INS_MEMB__RS____U6_0___OR_EQ__RT, + HEX_INS_MEMB__RS____U6_0___PLUS_EQ___U5, + HEX_INS_MEMB__RS____U6_0___MINUS_EQ___U5, + HEX_INS_MEMB__RS____U6_0____CLRBIT___U5_, + HEX_INS_MEMB__RS____U6_0____SETBIT___U5_, + HEX_INS_MEMH__RS____U6_1___PLUS_EQ__RT, + HEX_INS_MEMH__RS____U6_1___MINUS_EQ__RT, + HEX_INS_MEMH__RS____U6_1___AND_EQ__RT, + HEX_INS_MEMH__RS____U6_1___OR_EQ__RT, + HEX_INS_MEMH__RS____U6_1___PLUS_EQ___U5, + HEX_INS_MEMH__RS____U6_1___MINUS_EQ___U5, + HEX_INS_MEMH__RS____U6_1____CLRBIT___U5_, + HEX_INS_MEMH__RS____U6_1____SETBIT___U5_, + HEX_INS_MEMW__RS____U6_2___PLUS_EQ__RT, + HEX_INS_MEMW__RS____U6_2___MINUS_EQ__RT, + HEX_INS_MEMW__RS____U6_2___AND_EQ__RT, + HEX_INS_MEMW__RS____U6_2___OR_EQ__RT, + HEX_INS_MEMW__RS____U6_2___PLUS_EQ___U5, + HEX_INS_MEMW__RS____U6_2___MINUS_EQ___U5, + HEX_INS_MEMW__RS____U6_2____CLRBIT___U5_, + HEX_INS_MEMW__RS____U6_2____SETBIT___U5_, + HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF__CMP_EQ__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GTU__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GTU__NS_NEW__RT___JUMP_T__R9_2, + HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GT__RT__NS_NEW___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GT__RT__NS_NEW___JUMP_T__R9_2, + HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GTU__RT__NS_NEW___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GTU__RT__NS_NEW___JUMP_T__R9_2, + HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF__CMP_EQ__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GTU__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GTU__NS_NEW___U5___JUMP_T__R9_2, + HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_NT__R9_2, + HEX_INS_IF__TSTBIT__NS_NEW___0___JUMP_T__R9_2, + HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_NT__R9_2, + HEX_INS_IF___NOT_TSTBIT__NS_NEW___0___JUMP_T__R9_2, + HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_NT__R9_2, + HEX_INS_IF__CMP_EQ__NS_NEW____1___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_EQ__NS_NEW____1___JUMP_T__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_NT__R9_2, + HEX_INS_IF__CMP_GT__NS_NEW____1___JUMP_T__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_NT__R9_2, + HEX_INS_IF___NOT_CMP_GT__NS_NEW____1___JUMP_T__R9_2, + HEX_INS_MEMB__RS___RU_____U2____NT_NEW, + HEX_INS_MEMB__GP____U16_0____NT_NEW, + HEX_INS_MEMB__RS____S11_0____NT_NEW, + HEX_INS_MEMB__RX____I_CIRC__MU_____NT_NEW, + HEX_INS_MEMB__RX_____S4_0_CIRC__MU_____NT_NEW, + HEX_INS_MEMB__RE____U6____NT_NEW, + HEX_INS_MEMB__RX_____S4_0____NT_NEW, + HEX_INS_MEMB__RU_____U2____U6____NT_NEW, + HEX_INS_MEMB__RX____MU____NT_NEW, + HEX_INS_MEMB__RX____MU_BREV____NT_NEW, + HEX_INS_IF__PV__MEMB__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_MEMB__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV_NEW__MEMB__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMB__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV__MEMB__RS____U6_0____NT_NEW, + HEX_INS_IF__PV_NEW__MEMB__RS____U6_0____NT_NEW, + HEX_INS_IF__NOT_PV_MEMB__RS____U6_0____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0____NT_NEW, + HEX_INS_IF__PV__MEMB__RX_____S4_0____NT_NEW, + HEX_INS_IF__NOT_PV_MEMB__RX_____S4_0____NT_NEW, + HEX_INS_IF__PV_NEW__MEMB__RX_____S4_0____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMB__RX_____S4_0____NT_NEW, + HEX_INS_IF__PV__MEMB___U6____NT_NEW, + HEX_INS_IF__NOT_PV_MEMB___U6____NT_NEW, + HEX_INS_IF__PV_NEW__MEMB___U6____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMB___U6____NT_NEW, + HEX_INS_MEMH__RS___RU_____U2____NT_NEW, + HEX_INS_MEMH__GP____U16_1____NT_NEW, + HEX_INS_MEMH__RS____S11_1____NT_NEW, + HEX_INS_MEMH__RX____I_CIRC__MU_____NT_NEW, + HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____NT_NEW, + HEX_INS_MEMH__RE____U6____NT_NEW, + HEX_INS_MEMH__RX_____S4_1____NT_NEW, + HEX_INS_MEMH__RU_____U2____U6____NT_NEW, + HEX_INS_MEMH__RX____MU____NT_NEW, + HEX_INS_MEMH__RX____MU_BREV____NT_NEW, + HEX_INS_IF__PV__MEMH__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV__MEMH__RS____U6_1____NT_NEW, + HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____NT_NEW, + HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____NT_NEW, + HEX_INS_IF__PV__MEMH__RX_____S4_1____NT_NEW, + HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____NT_NEW, + HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____NT_NEW, + HEX_INS_IF__PV__MEMH___U6____NT_NEW, + HEX_INS_IF__NOT_PV_MEMH___U6____NT_NEW, + HEX_INS_IF__PV_NEW__MEMH___U6____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMH___U6____NT_NEW, + HEX_INS_MEMW__RS___RU_____U2____NT_NEW, + HEX_INS_MEMW__GP____U16_2____NT_NEW, + HEX_INS_MEMW__RS____S11_2____NT_NEW, + HEX_INS_MEMW__RX____I_CIRC__MU_____NT_NEW, + HEX_INS_MEMW__RX_____S4_2_CIRC__MU_____NT_NEW, + HEX_INS_MEMW__RE____U6____NT_NEW, + HEX_INS_MEMW__RX_____S4_2____NT_NEW, + HEX_INS_MEMW__RU_____U2____U6____NT_NEW, + HEX_INS_MEMW__RX____MU____NT_NEW, + HEX_INS_MEMW__RX____MU_BREV____NT_NEW, + HEX_INS_IF__PV__MEMW__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_MEMW__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV_NEW__MEMW__RS___RU_____U2____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMW__RS___RU_____U2____NT_NEW, + HEX_INS_IF__PV__MEMW__RS____U6_2____NT_NEW, + HEX_INS_IF__PV_NEW__MEMW__RS____U6_2____NT_NEW, + HEX_INS_IF__NOT_PV_MEMW__RS____U6_2____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2____NT_NEW, + HEX_INS_IF__PV__MEMW__RX_____S4_2____NT_NEW, + HEX_INS_IF__NOT_PV_MEMW__RX_____S4_2____NT_NEW, + HEX_INS_IF__PV_NEW__MEMW__RX_____S4_2____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMW__RX_____S4_2____NT_NEW, + HEX_INS_IF__PV__MEMW___U6____NT_NEW, + HEX_INS_IF__NOT_PV_MEMW___U6____NT_NEW, + HEX_INS_IF__PV_NEW__MEMW___U6____NT_NEW, + HEX_INS_IF__NOT_PV_NEW_MEMW___U6____NT_NEW, + HEX_INS_MEMD__RS___RU_____U2____RTT, + HEX_INS_MEMD__GP____U16_3____RTT, + HEX_INS_MEMD__RS____S11_3____RTT, + HEX_INS_MEMD__RX____I_CIRC__MU_____RTT, + HEX_INS_MEMD__RX_____S4_3_CIRC__MU_____RTT, + HEX_INS_MEMD__RE____U6____RTT, + HEX_INS_MEMD__RX_____S4_3____RTT, + HEX_INS_MEMD__RU_____U2____U6____RTT, + HEX_INS_MEMD__RX____MU____RTT, + HEX_INS_MEMD__RX____MU_BREV____RTT, + HEX_INS_IF__PV__MEMD__RS___RU_____U2____RTT, + HEX_INS_IF__NOT_PV_MEMD__RS___RU_____U2____RTT, + HEX_INS_IF__PV_NEW__MEMD__RS___RU_____U2____RTT, + HEX_INS_IF__NOT_PV_NEW_MEMD__RS___RU_____U2____RTT, + HEX_INS_IF__PV__MEMD__RS____U6_3____RTT, + HEX_INS_IF__PV_NEW__MEMD__RS____U6_3____RTT, + HEX_INS_IF__NOT_PV_MEMD__RS____U6_3____RTT, + HEX_INS_IF__NOT_PV_NEW_MEMD__RS____U6_3____RTT, + HEX_INS_IF__PV__MEMD__RX_____S4_3____RTT, + HEX_INS_IF__NOT_PV_MEMD__RX_____S4_3____RTT, + HEX_INS_IF__PV_NEW__MEMD__RX_____S4_3____RTT, + HEX_INS_IF__NOT_PV_NEW_MEMD__RX_____S4_3____RTT, + HEX_INS_IF__PV__MEMD___U6____RTT, + HEX_INS_IF__NOT_PV_MEMD___U6____RTT, + HEX_INS_IF__PV_NEW__MEMD___U6____RTT, + HEX_INS_IF__NOT_PV_NEW_MEMD___U6____RTT, + HEX_INS_MEMB__RS___RU_____U2____RT, + HEX_INS_MEMB__RS____U6_0_____S8, + HEX_INS_MEMB__GP____U16_0____RT, + HEX_INS_MEMB__RS____S11_0____RT, + HEX_INS_MEMB__RX____I_CIRC__MU_____RT, + HEX_INS_MEMB__RX_____S4_0_CIRC__MU_____RT, + HEX_INS_MEMB__RE____U6____RT, + HEX_INS_MEMB__RX_____S4_0____RT, + HEX_INS_MEMB__RU_____U2____U6____RT, + HEX_INS_MEMB__RX____MU____RT, + HEX_INS_MEMB__RX____MU_BREV____RT, + HEX_INS_IF__PV__MEMB__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_MEMB__RS___RU_____U2____RT, + HEX_INS_IF__PV_NEW__MEMB__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_NEW_MEMB__RS___RU_____U2____RT, + HEX_INS_IF__PV__MEMB__RS____U6_0_____S6, + HEX_INS_IF__NOT_PV_MEMB__RS____U6_0_____S6, + HEX_INS_IF__PV_NEW__MEMB__RS____U6_0_____S6, + HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0_____S6, + HEX_INS_IF__PV__MEMB__RS____U6_0____RT, + HEX_INS_IF__PV_NEW__MEMB__RS____U6_0____RT, + HEX_INS_IF__NOT_PV_MEMB__RS____U6_0____RT, + HEX_INS_IF__NOT_PV_NEW_MEMB__RS____U6_0____RT, + HEX_INS_IF__PV__MEMB__RX_____S4_0____RT, + HEX_INS_IF__NOT_PV_MEMB__RX_____S4_0____RT, + HEX_INS_IF__PV_NEW__MEMB__RX_____S4_0____RT, + HEX_INS_IF__NOT_PV_NEW_MEMB__RX_____S4_0____RT, + HEX_INS_IF__PV__MEMB___U6____RT, + HEX_INS_IF__NOT_PV_MEMB___U6____RT, + HEX_INS_IF__PV_NEW__MEMB___U6____RT, + HEX_INS_IF__NOT_PV_NEW_MEMB___U6____RT, + HEX_INS_MEMH__RS___RU_____U2____RT, + HEX_INS_MEMH__RS___RU_____U2____RT_H, + HEX_INS_MEMH__RS____U6_1_____S8, + HEX_INS_MEMH__GP____U16_1____RT, + HEX_INS_MEMH__GP____U16_1____RT_H, + HEX_INS_MEMH__RS____S11_1____RT, + HEX_INS_MEMH__RS____S11_1____RT_H, + HEX_INS_MEMH__RX____I_CIRC__MU_____RT, + HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____RT, + HEX_INS_MEMH__RX____I_CIRC__MU_____RT_H, + HEX_INS_MEMH__RX_____S4_1_CIRC__MU_____RT_H, + HEX_INS_MEMH__RE____U6____RT, + HEX_INS_MEMH__RX_____S4_1____RT, + HEX_INS_MEMH__RE____U6____RT_H, + HEX_INS_MEMH__RX_____S4_1____RT_H, + HEX_INS_MEMH__RU_____U2____U6____RT, + HEX_INS_MEMH__RX____MU____RT, + HEX_INS_MEMH__RU_____U2____U6____RT_H, + HEX_INS_MEMH__RX____MU____RT_H, + HEX_INS_MEMH__RX____MU_BREV____RT, + HEX_INS_MEMH__RX____MU_BREV____RT_H, + HEX_INS_IF__PV__MEMH__RS___RU_____U2____RT, + HEX_INS_IF__PV__MEMH__RS___RU_____U2____RT_H, + HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_MEMH__RS___RU_____U2____RT_H, + HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____RT, + HEX_INS_IF__PV_NEW__MEMH__RS___RU_____U2____RT_H, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS___RU_____U2____RT_H, + HEX_INS_IF__PV__MEMH__RS____U6_1_____S6, + HEX_INS_IF__NOT_PV_MEMH__RS____U6_1_____S6, + HEX_INS_IF__PV_NEW__MEMH__RS____U6_1_____S6, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1_____S6, + HEX_INS_IF__PV__MEMH__RS____U6_1____RT, + HEX_INS_IF__PV__MEMH__RS____U6_1____RT_H, + HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____RT, + HEX_INS_IF__PV_NEW__MEMH__RS____U6_1____RT_H, + HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____RT, + HEX_INS_IF__NOT_PV_MEMH__RS____U6_1____RT_H, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____RT, + HEX_INS_IF__NOT_PV_NEW_MEMH__RS____U6_1____RT_H, + HEX_INS_IF__PV__MEMH__RX_____S4_1____RT, + HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____RT, + HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____RT, + HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____RT, + HEX_INS_IF__PV__MEMH__RX_____S4_1____RT_H, + HEX_INS_IF__NOT_PV_MEMH__RX_____S4_1____RT_H, + HEX_INS_IF__PV_NEW__MEMH__RX_____S4_1____RT_H, + HEX_INS_IF__NOT_PV_NEW_MEMH__RX_____S4_1____RT_H, + HEX_INS_IF__PV__MEMH___U6____RT, + HEX_INS_IF__NOT_PV_MEMH___U6____RT, + HEX_INS_IF__PV_NEW__MEMH___U6____RT, + HEX_INS_IF__NOT_PV_NEW_MEMH___U6____RT, + HEX_INS_IF__PV__MEMH___U6____RT_H, + HEX_INS_IF__NOT_PV_MEMH___U6____RT_H, + HEX_INS_IF__PV_NEW__MEMH___U6____RT_H, + HEX_INS_IF__NOT_PV_NEW_MEMH___U6____RT_H, + HEX_INS_MEMW__RS___RU_____U2____RT, + HEX_INS_MEMW__RS____U6_2_____S8, + HEX_INS_MEMW__GP____U16_2____RT, + HEX_INS_MEMW__RS____S11_2____RT, + HEX_INS_MEMW__RX____I_CIRC__MU_____RT, + HEX_INS_MEMW__RX_____S4_2_CIRC__MU_____RT, + HEX_INS_MEMW__RE____U6____RT, + HEX_INS_MEMW__RX_____S4_2____RT, + HEX_INS_MEMW__RU_____U2____U6____RT, + HEX_INS_MEMW__RX____MU____RT, + HEX_INS_MEMW__RX____MU_BREV____RT, + HEX_INS_IF__PV__MEMW__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_MEMW__RS___RU_____U2____RT, + HEX_INS_IF__PV_NEW__MEMW__RS___RU_____U2____RT, + HEX_INS_IF__NOT_PV_NEW_MEMW__RS___RU_____U2____RT, + HEX_INS_IF__PV__MEMW__RS____U6_2_____S6, + HEX_INS_IF__NOT_PV_MEMW__RS____U6_2_____S6, + HEX_INS_IF__PV_NEW__MEMW__RS____U6_2_____S6, + HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2_____S6, + HEX_INS_IF__PV__MEMW__RS____U6_2____RT, + HEX_INS_IF__PV_NEW__MEMW__RS____U6_2____RT, + HEX_INS_IF__NOT_PV_MEMW__RS____U6_2____RT, + HEX_INS_IF__NOT_PV_NEW_MEMW__RS____U6_2____RT, + HEX_INS_IF__PV__MEMW__RX_____S4_2____RT, + HEX_INS_IF__NOT_PV_MEMW__RX_____S4_2____RT, + HEX_INS_IF__PV_NEW__MEMW__RX_____S4_2____RT, + HEX_INS_IF__NOT_PV_NEW_MEMW__RX_____S4_2____RT, + HEX_INS_IF__PV__MEMW___U6____RT, + HEX_INS_IF__NOT_PV_MEMW___U6____RT, + HEX_INS_IF__PV_NEW__MEMW___U6____RT, + HEX_INS_IF__NOT_PV_NEW_MEMW___U6____RT, + HEX_INS_ALLOCFRAME___U11_3_, + HEX_INS_GD___RS, + HEX_INS_GDD___RSS, + HEX_INS_RDD___GSS, + HEX_INS_RD___GS, + HEX_INS_CIAD__RS_, + HEX_INS_CRSWAP__RX__SGP0_, + HEX_INS_CRSWAP__RX__SGP1_, + HEX_INS_CRSWAP__RXX__SGP1_0_, + HEX_INS_CSWI__RS_, + HEX_INS_DCKILL, + HEX_INS_DCCLEANIDX__RS_, + HEX_INS_DCINVIDX__RS_, + HEX_INS_DCCLEANINVIDX__RS_, + HEX_INS_DCTAGW__RS__RT_, + HEX_INS_RD___DCTAGR__RS_, + HEX_INS_RD___GETIMASK__RS_, + HEX_INS_TLBLOCK, + HEX_INS_K0LOCK, + HEX_INS_TLBUNLOCK, + HEX_INS_K0UNLOCK, + HEX_INS_RD___IASSIGNR__RS_, + HEX_INS_IASSIGNW__RS_, + HEX_INS_RD___ICDATAR__RS_, + HEX_INS_RD___ICTAGR__RS_, + HEX_INS_ICINVIDX__RS_, + HEX_INS_ICTAGW__RS__RT_, + HEX_INS_ICKILL, + HEX_INS_L2CLEANIDX__RS_, + HEX_INS_L2INVIDX__RS_, + HEX_INS_L2CLEANINVIDX__RS_, + HEX_INS_L2GCLEAN__RTT_, + HEX_INS_L2GCLEANINV__RTT_, + HEX_INS_L2KILL, + HEX_INS_L2GUNLOCK, + HEX_INS_L2GCLEAN, + HEX_INS_L2GCLEANINV, + HEX_INS_PD___L2LOCKA__RS_, + HEX_INS_L2UNLOCKA__RS_, + HEX_INS_L2TAGW__RS__RT_, + HEX_INS_RD___L2TAGR__RS_, + HEX_INS_RD___MEMW_PHYS__RS__RT_, + HEX_INS_NMI__RS_, + HEX_INS_RESUME__RS_, + HEX_INS_RTE, + HEX_INS_RTEUNLOCK, + HEX_INS_SETIMASK__PT__RS_, + HEX_INS_SIAD__RS_, + HEX_INS_START__RS_, + HEX_INS_STOP__RS_, + HEX_INS_SWI__RS_, + HEX_INS_TLBW__RSS__RT_, + HEX_INS_RDD___TLBR__RS_, + HEX_INS_RD___TLBP__RS_, + HEX_INS_TLBINVASID__RS_, + HEX_INS_RD___CTLBW__RSS__RT_, + HEX_INS_RD___TLBOC__RSS_, + HEX_INS_SD___RS, + HEX_INS_SDD___RSS, + HEX_INS_RD___SS, + HEX_INS_RDD___SSS, + HEX_INS_WAIT__RS_, + HEX_INS_RD___MEMW_LOCKED__RS_, + HEX_INS_RDD___MEMD_LOCKED__RS_, + HEX_INS_MEMW_LOCKED__RS__PD____RT, + HEX_INS_MEMD_LOCKED__RS__PD____RTT, + HEX_INS_DCZEROA__RS_, + HEX_INS_BARRIER, + HEX_INS_BRKPT, + HEX_INS_DCFETCH__RS____U11_3_, + HEX_INS_DCCLEANA__RS_, + HEX_INS_DCINVA__RS_, + HEX_INS_DCCLEANINVA__RS_, + HEX_INS_ICINVA__RS_, + HEX_INS_ISYNC, + HEX_INS_L2FETCH__RS__RT_, + HEX_INS_L2FETCH__RS__RTT_, + HEX_INS_PAUSE___U8_, + HEX_INS_SYNCHT, + HEX_INS_TRACE__RS_, + HEX_INS_TRAP0___U8_, + HEX_INS_TRAP1___U8_, + HEX_INS_RDD___ABS__RSS_, + HEX_INS_RD___ABS__RS_, + HEX_INS_RD___ABS__RS___SAT, + HEX_INS_RD___ADD__RS__ADD__RU___S6__, + HEX_INS_RD___ADD__RS__SUB___S6__RU__, + HEX_INS_RX__PLUS_EQ__ADD__RS___S8_, + HEX_INS_RX__MINUS_EQ__ADD__RS___S8_, + HEX_INS_RX__PLUS_EQ__ADD__RS__RT_, + HEX_INS_RX__MINUS_EQ__ADD__RS__RT_, + HEX_INS_RDD___ADD__RSS__RTT_, + HEX_INS_RDD___ADD__RSS__RTT___SAT, + HEX_INS_RDD___ADD__RSS__RTT___RAW_LO, + HEX_INS_RDD___ADD__RSS__RTT___RAW_HI, + HEX_INS_RD___ADD__RS__RT___SAT_DEPRECATED, + HEX_INS_RD___ADD__RT_L__RS_L_, + HEX_INS_RD___ADD__RT_L__RS_H_, + HEX_INS_RD___ADD__RT_L__RS_L___SAT, + HEX_INS_RD___ADD__RT_L__RS_H___SAT, + HEX_INS_RD___ADD__RT_L__RS_L_____16, + HEX_INS_RD___ADD__RT_L__RS_H_____16, + HEX_INS_RD___ADD__RT_H__RS_L_____16, + HEX_INS_RD___ADD__RT_H__RS_H_____16, + HEX_INS_RD___ADD__RT_L__RS_L___SAT___16, + HEX_INS_RD___ADD__RT_L__RS_H___SAT___16, + HEX_INS_RD___ADD__RT_H__RS_L___SAT___16, + HEX_INS_RD___ADD__RT_H__RS_H___SAT___16, + HEX_INS_RDD___ADD__RSS__RTT__PX___CARRY, + HEX_INS_RDD___SUB__RSS__RTT__PX___CARRY, + HEX_INS_RDD___NOT__RSS_, + HEX_INS_RDD___AND__RSS__RTT_, + HEX_INS_RDD___AND__RTT___RSS_, + HEX_INS_RDD___OR__RSS__RTT_, + HEX_INS_RDD___OR__RTT___RSS_, + HEX_INS_RDD___XOR__RSS__RTT_, + HEX_INS_RXX____XOR__RSS__RTT_, + HEX_INS_RX__OR_EQ__AND__RS___S10_, + HEX_INS_RX___OR__RU__AND__RX___S10__, + HEX_INS_RX__OR_EQ__OR__RS___S10_, + HEX_INS_RX__OR_EQ__AND__RS___RT_, + HEX_INS_RX__AND_EQ__AND__RS___RT_, + HEX_INS_RX____AND__RS___RT_, + HEX_INS_RX__AND_EQ__AND__RS__RT_, + HEX_INS_RX__AND_EQ__OR__RS__RT_, + HEX_INS_RX__AND_EQ__XOR__RS__RT_, + HEX_INS_RX__OR_EQ__AND__RS__RT_, + HEX_INS_RX____XOR__RS__RT_, + HEX_INS_RX__OR_EQ__OR__RS__RT_, + HEX_INS_RX__OR_EQ__XOR__RS__RT_, + HEX_INS_RX____AND__RS__RT_, + HEX_INS_RX____OR__RS__RT_, + HEX_INS_RD___MAX__RS__RT_, + HEX_INS_RD___MAXU__RS__RT_, + HEX_INS_RDD___MAX__RSS__RTT_, + HEX_INS_RDD___MAXU__RSS__RTT_, + HEX_INS_RD___MIN__RT__RS_, + HEX_INS_RD___MINU__RT__RS_, + HEX_INS_RDD___MIN__RTT__RSS_, + HEX_INS_RDD___MINU__RTT__RSS_, + HEX_INS_RD___MODWRAP__RS__RT_, + HEX_INS_RDD___NEG__RSS_, + HEX_INS_RD___NEG__RS___SAT, + HEX_INS_RD___ROUND__RSS___SAT, + HEX_INS_RD___CROUND__RS___U5_, + HEX_INS_RD___ROUND__RS___U5_, + HEX_INS_RD___ROUND__RS___U5___SAT, + HEX_INS_RD___CROUND__RS__RT_, + HEX_INS_RD___ROUND__RS__RT_, + HEX_INS_RD___ROUND__RS__RT___SAT, + HEX_INS_RDD___SUB__RTT__RSS_, + HEX_INS_RD___SUB__RT__RS___SAT_DEPRECATED, + HEX_INS_RX__PLUS_EQ__SUB__RT__RS_, + HEX_INS_RD___SUB__RT_L__RS_L_, + HEX_INS_RD___SUB__RT_L__RS_H_, + HEX_INS_RD___SUB__RT_L__RS_L___SAT, + HEX_INS_RD___SUB__RT_L__RS_H___SAT, + HEX_INS_RD___SUB__RT_L__RS_L_____16, + HEX_INS_RD___SUB__RT_L__RS_H_____16, + HEX_INS_RD___SUB__RT_H__RS_L_____16, + HEX_INS_RD___SUB__RT_H__RS_H_____16, + HEX_INS_RD___SUB__RT_L__RS_L___SAT___16, + HEX_INS_RD___SUB__RT_L__RS_H___SAT___16, + HEX_INS_RD___SUB__RT_H__RS_L___SAT___16, + HEX_INS_RD___SUB__RT_H__RS_H___SAT___16, + HEX_INS_RDD___SXTW__RS_, + HEX_INS_RDD___VABSH__RSS_, + HEX_INS_RDD___VABSH__RSS___SAT, + HEX_INS_RDD___VABSW__RSS_, + HEX_INS_RDD___VABSW__RSS___SAT, + HEX_INS_RDD___VABSDIFFUB__RTT__RSS_, + HEX_INS_RDD___VABSDIFFB__RTT__RSS_, + HEX_INS_RDD___VABSDIFFH__RTT__RSS_, + HEX_INS_RDD___VABSDIFFW__RTT__RSS_, + HEX_INS_RXX__PE___VACSH__RSS__RTT_, + HEX_INS_RDD___VADDH__RSS__RTT_, + HEX_INS_RDD___VADDH__RSS__RTT___SAT, + HEX_INS_RDD___VADDUH__RSS__RTT___SAT, + HEX_INS_RD___VADDHUB__RSS__RTT___SAT, + HEX_INS_RDD___VRADDUB__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRADDUB__RSS__RTT_, + HEX_INS_RD___VRADDUH__RSS__RTT_, + HEX_INS_RD___VRADDH__RSS__RTT_, + HEX_INS_RDD___VADDUB__RSS__RTT_, + HEX_INS_RDD___VADDUB__RSS__RTT___SAT, + HEX_INS_RDD___VADDW__RSS__RTT_, + HEX_INS_RDD___VADDW__RSS__RTT___SAT, + HEX_INS_RDD___VAVGH__RSS__RTT_, + HEX_INS_RDD___VAVGH__RSS__RTT___RND, + HEX_INS_RDD___VAVGH__RSS__RTT___CRND, + HEX_INS_RDD___VAVGUH__RSS__RTT_, + HEX_INS_RDD___VAVGUH__RSS__RTT___RND, + HEX_INS_RDD___VNAVGH__RTT__RSS_, + HEX_INS_RDD___VNAVGH__RTT__RSS___RND_SAT, + HEX_INS_RDD___VNAVGH__RTT__RSS___CRND_SAT, + HEX_INS_RDD___VAVGUB__RSS__RTT_, + HEX_INS_RDD___VAVGUB__RSS__RTT___RND, + HEX_INS_RDD___VAVGW__RSS__RTT_, + HEX_INS_RDD___VAVGW__RSS__RTT___RND, + HEX_INS_RDD___VAVGW__RSS__RTT___CRND, + HEX_INS_RDD___VAVGUW__RSS__RTT_, + HEX_INS_RDD___VAVGUW__RSS__RTT___RND, + HEX_INS_RDD___VNAVGW__RTT__RSS_, + HEX_INS_RDD___VNAVGW__RTT__RSS___RND_SAT, + HEX_INS_RDD___VNAVGW__RTT__RSS___CRND_SAT, + HEX_INS_RDD___VCNEGH__RSS__RT_, + HEX_INS_RXX__PLUS_EQ__VRCNEGH__RSS__RT_, + HEX_INS_RDD___VMAXUB__RTT__RSS_, + HEX_INS_RDD___VMAXB__RTT__RSS_, + HEX_INS_RDD___VMAXH__RTT__RSS_, + HEX_INS_RDD___VMAXUH__RTT__RSS_, + HEX_INS_RXX___VRMAXH__RSS__RU_, + HEX_INS_RXX___VRMAXUH__RSS__RU_, + HEX_INS_RXX___VRMAXW__RSS__RU_, + HEX_INS_RXX___VRMAXUW__RSS__RU_, + HEX_INS_RDD___VMAXUW__RTT__RSS_, + HEX_INS_RDD___VMAXW__RTT__RSS_, + HEX_INS_RDD___VMINUB__RTT__RSS_, + HEX_INS_RDD___VMINB__RTT__RSS_, + HEX_INS_RDD__PE___VMINUB__RTT__RSS_, + HEX_INS_RDD___VMINH__RTT__RSS_, + HEX_INS_RDD___VMINUH__RTT__RSS_, + HEX_INS_RXX___VRMINH__RSS__RU_, + HEX_INS_RXX___VRMINUH__RSS__RU_, + HEX_INS_RXX___VRMINW__RSS__RU_, + HEX_INS_RXX___VRMINUW__RSS__RU_, + HEX_INS_RDD___VMINW__RTT__RSS_, + HEX_INS_RDD___VMINUW__RTT__RSS_, + HEX_INS_RDD___VRSADUB__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRSADUB__RSS__RTT_, + HEX_INS_RDD___VSUBH__RTT__RSS_, + HEX_INS_RDD___VSUBH__RTT__RSS___SAT, + HEX_INS_RDD___VSUBUH__RTT__RSS___SAT, + HEX_INS_RDD___VSUBUB__RTT__RSS_, + HEX_INS_RDD___VSUBUB__RTT__RSS___SAT, + HEX_INS_RDD___VSUBW__RTT__RSS_, + HEX_INS_RDD___VSUBW__RTT__RSS___SAT, + HEX_INS_RD___CLB__RSS_, + HEX_INS_RD___CL0__RSS_, + HEX_INS_RD___CL1__RSS_, + HEX_INS_RD___NORMAMT__RSS_, + HEX_INS_RD___ADD__CLB__RSS____S6_, + HEX_INS_RD___ADD__CLB__RS____S6_, + HEX_INS_RD___CLB__RS_, + HEX_INS_RD___CL0__RS_, + HEX_INS_RD___CL1__RS_, + HEX_INS_RD___NORMAMT__RS_, + HEX_INS_RD___POPCOUNT__RSS_, + HEX_INS_RD___CT0__RSS_, + HEX_INS_RD___CT1__RSS_, + HEX_INS_RD___CT0__RS_, + HEX_INS_RD___CT1__RS_, + HEX_INS_RDD___EXTRACTU__RSS___U6___U6_, + HEX_INS_RDD___EXTRACT__RSS___U6___U6_, + HEX_INS_RD___EXTRACTU__RS___U5___U5_, + HEX_INS_RD___EXTRACT__RS___U5___U5_, + HEX_INS_RDD___EXTRACTU__RSS__RTT_, + HEX_INS_RDD___EXTRACT__RSS__RTT_, + HEX_INS_RD___EXTRACTU__RS__RTT_, + HEX_INS_RD___EXTRACT__RS__RTT_, + HEX_INS_RXX___INSERT__RSS___U6___U6_, + HEX_INS_RX___INSERT__RS___U5___U5_, + HEX_INS_RX___INSERT__RS__RTT_, + HEX_INS_RXX___INSERT__RSS__RTT_, + HEX_INS_RDD___DEINTERLEAVE__RSS_, + HEX_INS_RDD___INTERLEAVE__RSS_, + HEX_INS_RDD___LFS__RSS__RTT_, + HEX_INS_RD___PARITY__RSS__RTT_, + HEX_INS_RD___PARITY__RS__RT_, + HEX_INS_RDD___BREV__RSS_, + HEX_INS_RD___BREV__RS_, + HEX_INS_RD___SETBIT__RS___U5_, + HEX_INS_RD___CLRBIT__RS___U5_, + HEX_INS_RD___TOGGLEBIT__RS___U5_, + HEX_INS_RD___SETBIT__RS__RT_, + HEX_INS_RD___CLRBIT__RS__RT_, + HEX_INS_RD___TOGGLEBIT__RS__RT_, + HEX_INS_RDD___BITSPLIT__RS___U5_, + HEX_INS_RDD___BITSPLIT__RS__RT_, + HEX_INS_RX___TABLEIDXB__RS___U4___S6___RAW, + HEX_INS_RX___TABLEIDXH__RS___U4___S6___RAW, + HEX_INS_RX___TABLEIDXW__RS___U4___S6___RAW, + HEX_INS_RX___TABLEIDXD__RS___U4___S6___RAW, + HEX_INS_RDD___VXADDSUBH__RSS__RTT___SAT, + HEX_INS_RDD___VXSUBADDH__RSS__RTT___SAT, + HEX_INS_RDD___VXADDSUBH__RSS__RTT___RND___1_SAT, + HEX_INS_RDD___VXSUBADDH__RSS__RTT___RND___1_SAT, + HEX_INS_RDD___VXADDSUBW__RSS__RTT___SAT, + HEX_INS_RDD___VXSUBADDW__RSS__RTT___SAT, + HEX_INS_RDD___CMPY__RS__RT______N__SAT, + HEX_INS_RDD___CMPY__RS__RT________N__SAT, + HEX_INS_RXX__PLUS_EQ__CMPY__RS__RT______N__SAT, + HEX_INS_RXX__MINUS_EQ__CMPY__RS__RT______N__SAT, + HEX_INS_RXX__PLUS_EQ__CMPY__RS__RT________N__SAT, + HEX_INS_RXX__MINUS_EQ__CMPY__RS__RT________N__SAT, + HEX_INS_RDD___CMPYI__RS__RT_, + HEX_INS_RDD___CMPYR__RS__RT_, + HEX_INS_RXX__PLUS_EQ__CMPYI__RS__RT_, + HEX_INS_RXX__PLUS_EQ__CMPYR__RS__RT_, + HEX_INS_RD___CMPY__RS__RT______N__RND_SAT, + HEX_INS_RD___CMPY__RS__RT________N__RND_SAT, + HEX_INS_RD___CMPYIWH__RSS__RT_____1_RND_SAT, + HEX_INS_RD___CMPYIWH__RSS__RT_______1_RND_SAT, + HEX_INS_RD___CMPYRWH__RSS__RT_____1_RND_SAT, + HEX_INS_RD___CMPYRWH__RSS__RT_______1_RND_SAT, + HEX_INS_RDD___VCMPYR__RSS__RTT______N__SAT, + HEX_INS_RDD___VCMPYI__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VCMPYR__RSS__RTT___SAT, + HEX_INS_RXX__PLUS_EQ__VCMPYI__RSS__RTT___SAT, + HEX_INS_RDD___VCONJ__RSS___SAT, + HEX_INS_RDD___VCROTATE__RSS__RT_, + HEX_INS_RDD___VRCMPYI__RSS__RTT_, + HEX_INS_RDD___VRCMPYR__RSS__RTT_, + HEX_INS_RDD___VRCMPYI__RSS__RTT___, + HEX_INS_RDD___VRCMPYR__RSS__RTT___, + HEX_INS_RXX__PLUS_EQ__VRCMPYI__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRCMPYR__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRCMPYI__RSS__RTT___, + HEX_INS_RXX__PLUS_EQ__VRCMPYR__RSS__RTT___, + HEX_INS_RDD___VRCMPYS__RSS__RTT_____1_SAT_RAW_HI, + HEX_INS_RDD___VRCMPYS__RSS__RTT_____1_SAT_RAW_LO, + HEX_INS_RXX__PLUS_EQ__VRCMPYS__RSS__RTT_____1_SAT_RAW_HI, + HEX_INS_RXX__PLUS_EQ__VRCMPYS__RSS__RTT_____1_SAT_RAW_LO, + HEX_INS_RD___VRCMPYS__RSS__RTT_____1_RND_SAT_RAW_HI, + HEX_INS_RD___VRCMPYS__RSS__RTT_____1_RND_SAT_RAW_LO, + HEX_INS_RDD___VRCROTATE__RSS__RT___U2_, + HEX_INS_RXX__PLUS_EQ__VRCROTATE__RSS__RT___U2_, + HEX_INS_RD___SFADD__RS__RT_, + HEX_INS_PD___SFCLASS__RS___U5_, + HEX_INS_PD___DFCLASS__RSS___U5_, + HEX_INS_PD___CMP_GE__RS__RT_, + HEX_INS_PD___CMP_UO__RS__RT_, + HEX_INS_PD___CMP_EQ__RS__RT__, + HEX_INS_PD___CMP_GT__RS__RT__, + HEX_INS_PD___CMP_EQ__RSS__RTT_, + HEX_INS_PD___CMP_GT__RSS__RTT_, + HEX_INS_PD___CMP_GE__RSS__RTT_, + HEX_INS_PD___CMP_UO__RSS__RTT_, + HEX_INS_RDD___CONVERT_SF2DF__RS_, + HEX_INS_RD___CONVERT_DF2SF__RSS_, + HEX_INS_RDD___CONVERT_UD2DF__RSS_, + HEX_INS_RDD___CONVERT_D2DF__RSS_, + HEX_INS_RDD___CONVERT_UW2DF__RS_, + HEX_INS_RDD___CONVERT_W2DF__RS_, + HEX_INS_RD___CONVERT_UD2SF__RSS_, + HEX_INS_RD___CONVERT_D2SF__RSS_, + HEX_INS_RD___CONVERT_UW2SF__RS_, + HEX_INS_RD___CONVERT_W2SF__RS_, + HEX_INS_RDD___CONVERT_DF2D__RSS_, + HEX_INS_RDD___CONVERT_DF2UD__RSS_, + HEX_INS_RDD___CONVERT_DF2D__RSS___CHOP, + HEX_INS_RDD___CONVERT_DF2UD__RSS___CHOP, + HEX_INS_RDD___CONVERT_SF2UD__RS_, + HEX_INS_RDD___CONVERT_SF2D__RS_, + HEX_INS_RDD___CONVERT_SF2UD__RS___CH, + HEX_INS_RDD___CONVERT_SF2D__RS___CHOP, + HEX_INS_RD___CONVERT_DF2UW__RSS_, + HEX_INS_RD___CONVERT_DF2W__RSS_, + HEX_INS_RD___CONVERT_DF2UW__RSS___CHOP, + HEX_INS_RD___CONVERT_DF2W__RSS___CHOP, + HEX_INS_RD___CONVERT_SF2UW__RS_, + HEX_INS_RD___CONVERT_SF2UW__RS___CHOP, + HEX_INS_RD___CONVERT_SF2W__RS_, + HEX_INS_RD___CONVERT_SF2W__RS___CHOP, + HEX_INS_RD___SFFIXUPR__RS_, + HEX_INS_RD___SFFIXUPN__RS__RT_, + HEX_INS_RD___SFFIXUPD__RS__RT_, + HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT_, + HEX_INS_RX__MINUS_EQ__SFMPY__RS__RT_, + HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT__PU___SCALE, + HEX_INS_RD__PE___SFINVSQRTA__RS_, + HEX_INS_RX__PLUS_EQ__SFMPY__RS__RT___LIB, + HEX_INS_RX__MINUS_EQ__SFMPY__RS__RT___LIB, + HEX_INS_RD___SFMAKE___U10___POS, + HEX_INS_RD___SFMAKE___U10___NEG, + HEX_INS_RDD___DFMAKE___U10___POS, + HEX_INS_RDD___DFMAKE___U10___NEG, + HEX_INS_RD___SFMAX__RS__RT_, + HEX_INS_RD___SFMIN__RS__RT_, + HEX_INS_RD___SFMPY__RS__RT_, + HEX_INS_RD__PE___SFRECIPA__RS__RT_, + HEX_INS_RD___SFSUB__RS__RT_, + HEX_INS_RD___ADD___U6__MPYI__RS__RT__, + HEX_INS_RD___ADD___U6__MPYI__RS___U6__, + HEX_INS_RD___ADD__RU__MPYI___U6_2__RS__, + HEX_INS_RD___ADD__RU__MPYI__RS___U6__, + HEX_INS_RY___ADD__RU__MPYI__RY__RS__, + HEX_INS_RD__EQ_PLUS__MPYI__RS___U8_, + HEX_INS_RD__EQ_MINUS__MPYI__RS___U8_, + HEX_INS_RX__PLUS_EQ__MPYI__RS___U8_, + HEX_INS_RX__MINUS_EQ__MPYI__RS___U8_, + HEX_INS_RD___MPYI__RS__RT_, + HEX_INS_RX__PLUS_EQ__MPYI__RS__RT_, + HEX_INS_RDD___VMPYWEH__RSS__RTT______N__SAT, + HEX_INS_RDD___VMPYWOH__RSS__RTT______N__SAT, + HEX_INS_RDD___VMPYWEH__RSS__RTT______N__RND_SAT, + HEX_INS_RDD___VMPYWOH__RSS__RTT______N__RND_SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWEH__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWOH__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWEH__RSS__RTT______N__RND_SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWOH__RSS__RTT______N__RND_SAT, + HEX_INS_RDD___VMPYWEUH__RSS__RTT______N__SAT, + HEX_INS_RDD___VMPYWOUH__RSS__RTT______N__SAT, + HEX_INS_RDD___VMPYWEUH__RSS__RTT______N__RND_SAT, + HEX_INS_RDD___VMPYWOUH__RSS__RTT______N__RND_SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWEUH__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWOUH__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWEUH__RSS__RTT______N__RND_SAT, + HEX_INS_RXX__PLUS_EQ__VMPYWOUH__RSS__RTT______N__RND_SAT, + HEX_INS_RDD___MPY__RS_L__RT_L______N_, + HEX_INS_RDD___MPY__RS_L__RT_H______N_, + HEX_INS_RDD___MPY__RS_H__RT_L______N_, + HEX_INS_RDD___MPY__RS_H__RT_H______N_, + HEX_INS_RDD___MPY__RS_L__RT_L______N__RND, + HEX_INS_RDD___MPY__RS_L__RT_H______N__RND, + HEX_INS_RDD___MPY__RS_H__RT_L______N__RND, + HEX_INS_RDD___MPY__RS_H__RT_H______N__RND, + HEX_INS_RXX__PLUS_EQ__MPY__RS_L__RT_L______N_, + HEX_INS_RXX__PLUS_EQ__MPY__RS_L__RT_H______N_, + HEX_INS_RXX__PLUS_EQ__MPY__RS_H__RT_L______N_, + HEX_INS_RXX__PLUS_EQ__MPY__RS_H__RT_H______N_, + HEX_INS_RXX__MINUS_EQ__MPY__RS_L__RT_L______N_, + HEX_INS_RXX__MINUS_EQ__MPY__RS_L__RT_H______N_, + HEX_INS_RXX__MINUS_EQ__MPY__RS_H__RT_L______N_, + HEX_INS_RXX__MINUS_EQ__MPY__RS_H__RT_H______N_, + HEX_INS_RD___MPY__RS_L__RT_L______N_, + HEX_INS_RD___MPY__RS_L__RT_H______N_, + HEX_INS_RD___MPY__RS_H__RT_L______N_, + HEX_INS_RD___MPY__RS_H__RT_H______N_, + HEX_INS_RD___MPY__RS_L__RT_L______N__SAT, + HEX_INS_RD___MPY__RS_L__RT_H______N__SAT, + HEX_INS_RD___MPY__RS_H__RT_L______N__SAT, + HEX_INS_RD___MPY__RS_H__RT_H______N__SAT, + HEX_INS_RD___MPY__RS_L__RT_L______N__RND, + HEX_INS_RD___MPY__RS_L__RT_H______N__RND, + HEX_INS_RD___MPY__RS_H__RT_L______N__RND, + HEX_INS_RD___MPY__RS_H__RT_H______N__RND, + HEX_INS_RD___MPY__RS_L__RT_L______N__RND_SAT, + HEX_INS_RD___MPY__RS_L__RT_H______N__RND_SAT, + HEX_INS_RD___MPY__RS_H__RT_L______N__RND_SAT, + HEX_INS_RD___MPY__RS_H__RT_H______N__RND_SAT, + HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_L______N_, + HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_H______N_, + HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_L______N_, + HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_H______N_, + HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_L______N__SAT, + HEX_INS_RX__PLUS_EQ__MPY__RS_L__RT_H______N__SAT, + HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_L______N__SAT, + HEX_INS_RX__PLUS_EQ__MPY__RS_H__RT_H______N__SAT, + HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_L______N_, + HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_H______N_, + HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_L______N_, + HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_H______N_, + HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_L______N__SAT, + HEX_INS_RX__MINUS_EQ__MPY__RS_L__RT_H______N__SAT, + HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_L______N__SAT, + HEX_INS_RX__MINUS_EQ__MPY__RS_H__RT_H______N__SAT, + HEX_INS_RDD___MPYU__RS_L__RT_L______N_, + HEX_INS_RDD___MPYU__RS_L__RT_H______N_, + HEX_INS_RDD___MPYU__RS_H__RT_L______N_, + HEX_INS_RDD___MPYU__RS_H__RT_H______N_, + HEX_INS_RXX__PLUS_EQ__MPYU__RS_L__RT_L______N_, + HEX_INS_RXX__PLUS_EQ__MPYU__RS_L__RT_H______N_, + HEX_INS_RXX__PLUS_EQ__MPYU__RS_H__RT_L______N_, + HEX_INS_RXX__PLUS_EQ__MPYU__RS_H__RT_H______N_, + HEX_INS_RXX__MINUS_EQ__MPYU__RS_L__RT_L______N_, + HEX_INS_RXX__MINUS_EQ__MPYU__RS_L__RT_H______N_, + HEX_INS_RXX__MINUS_EQ__MPYU__RS_H__RT_L______N_, + HEX_INS_RXX__MINUS_EQ__MPYU__RS_H__RT_H______N_, + HEX_INS_RD___MPYU__RS_L__RT_L______N_, + HEX_INS_RD___MPYU__RS_L__RT_H______N_, + HEX_INS_RD___MPYU__RS_H__RT_L______N_, + HEX_INS_RD___MPYU__RS_H__RT_H______N_, + HEX_INS_RX__PLUS_EQ__MPYU__RS_L__RT_L______N_, + HEX_INS_RX__PLUS_EQ__MPYU__RS_L__RT_H______N_, + HEX_INS_RX__PLUS_EQ__MPYU__RS_H__RT_L______N_, + HEX_INS_RX__PLUS_EQ__MPYU__RS_H__RT_H______N_, + HEX_INS_RX__MINUS_EQ__MPYU__RS_L__RT_L______N_, + HEX_INS_RX__MINUS_EQ__MPYU__RS_L__RT_H______N_, + HEX_INS_RX__MINUS_EQ__MPYU__RS_H__RT_L______N_, + HEX_INS_RX__MINUS_EQ__MPYU__RS_H__RT_H______N_, + HEX_INS_RDD___PMPYW__RS__RT_, + HEX_INS_RXX____PMPYW__RS__RT_, + HEX_INS_RDD___VRMPYWOH__RSS__RTT______N_, + HEX_INS_RDD___VRMPYWEH__RSS__RTT______N_, + HEX_INS_RXX__PLUS_EQ__VRMPYWEH__RSS__RTT______N_, + HEX_INS_RXX__PLUS_EQ__VRMPYWOH__RSS__RTT______N_, + HEX_INS_RD___MPY__RS__RT___RND, + HEX_INS_RD___MPYU__RS__RT_, + HEX_INS_RD___MPYSU__RS__RT_, + HEX_INS_RD___MPY__RS__RT_H_____1_SAT, + HEX_INS_RD___MPY__RS__RT_L_____1_SAT, + HEX_INS_RD___MPY__RS__RT_H_____1_RND_SAT, + HEX_INS_RD___MPY__RS__RT_____1_SAT, + HEX_INS_RD___MPY__RS__RT_L_____1_RND_SAT, + HEX_INS_RD___MPY__RS__RT______N_, + HEX_INS_RX__PLUS_EQ__MPY__RS__RT_____1_SAT, + HEX_INS_RX__MINUS_EQ__MPY__RS__RT_____1_SAT, + HEX_INS_RDD___MPY__RS__RT_, + HEX_INS_RDD___MPYU__RS__RT_, + HEX_INS_RXX__PLUS_EQ__MPY__RS__RT_, + HEX_INS_RXX__MINUS_EQ__MPY__RS__RT_, + HEX_INS_RXX__PLUS_EQ__MPYU__RS__RT_, + HEX_INS_RXX__MINUS_EQ__MPYU__RS__RT_, + HEX_INS_RDD___VDMPY__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VDMPY__RSS__RTT______N__SAT, + HEX_INS_RD___VDMPY__RSS__RTT______N__RND_SAT, + HEX_INS_RDD___VRMPYBU__RSS__RTT_, + HEX_INS_RDD___VRMPYBSU__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRMPYBU__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRMPYBSU__RSS__RTT_, + HEX_INS_RDD___VDMPYBSU__RSS__RTT___SAT, + HEX_INS_RXX__PLUS_EQ__VDMPYBSU__RSS__RTT___SAT, + HEX_INS_RDD___VMPYEH__RSS__RTT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYEH__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VMPYEH__RSS__RTT______N__SAT, + HEX_INS_RDD___VMPYH__RS__RT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYH__RS__RT_, + HEX_INS_RXX__PLUS_EQ__VMPYH__RS__RT______N__SAT, + HEX_INS_RD___VMPYH__RS__RT______N__RND_SAT, + HEX_INS_RDD___VMPYHSU__RS__RT______N__SAT, + HEX_INS_RXX__PLUS_EQ__VMPYHSU__RS__RT______N__SAT, + HEX_INS_RDD___VRMPYH__RSS__RTT_, + HEX_INS_RXX__PLUS_EQ__VRMPYH__RSS__RTT_, + HEX_INS_RDD___VMPYBSU__RS__RT_, + HEX_INS_RDD___VMPYBU__RS__RT_, + HEX_INS_RXX__PLUS_EQ__VMPYBU__RS__RT_, + HEX_INS_RXX__PLUS_EQ__VMPYBSU__RS__RT_, + HEX_INS_RDD___VPMPYH__RS__RT_, + HEX_INS_RXX____VPMPYH__RS__RT_, + HEX_INS_RDD___DECBIN__RSS__RTT_, + HEX_INS_RD___SAT__RSS_, + HEX_INS_RD___SATH__RS_, + HEX_INS_RD___SATUH__RS_, + HEX_INS_RD___SATUB__RS_, + HEX_INS_RD___SATB__RS_, + HEX_INS_RD___SWIZ__RS_, + HEX_INS_RDD___VALIGNB__RTT__RSS___U3_, + HEX_INS_RDD___VALIGNB__RTT__RSS__PU_, + HEX_INS_RD___VRNDWH__RSS_, + HEX_INS_RD___VRNDWH__RSS___SAT, + HEX_INS_RD___VSATHUB__RSS_, + HEX_INS_RD___VSATWH__RSS_, + HEX_INS_RD___VSATWUH__RSS_, + HEX_INS_RD___VSATHB__RSS_, + HEX_INS_RD___VSATHB__RS_, + HEX_INS_RD___VSATHUB__RS_, + HEX_INS_RDD___VSATHUB__RSS_, + HEX_INS_RDD___VSATWUH__RSS_, + HEX_INS_RDD___VSATWH__RSS_, + HEX_INS_RDD___VSATHB__RSS_, + HEX_INS_RDD___SHUFFEB__RSS__RTT_, + HEX_INS_RDD___SHUFFOB__RTT__RSS_, + HEX_INS_RDD___SHUFFEH__RSS__RTT_, + HEX_INS_RDD___SHUFFOH__RTT__RSS_, + HEX_INS_RDD___VSPLATB__RS_, + HEX_INS_RD___VSPLATB__RS_, + HEX_INS_RDD___VSPLATH__RS_, + HEX_INS_RDD___VSPLICEB__RSS__RTT___U3_, + HEX_INS_RDD___VSPLICEB__RSS__RTT__PU_, + HEX_INS_RDD___VSXTBH__RS_, + HEX_INS_RDD___VSXTHW__RS_, + HEX_INS_RD___VTRUNOHB__RSS_, + HEX_INS_RD___VTRUNEHB__RSS_, + HEX_INS_RDD___VTRUNEWH__RSS__RTT_, + HEX_INS_RDD___VTRUNEHB__RSS__RTT_, + HEX_INS_RDD___VTRUNOWH__RSS__RTT_, + HEX_INS_RDD___VTRUNOHB__RSS__RTT_, + HEX_INS_RDD___VZXTBH__RS_, + HEX_INS_RDD___VZXTHW__RS_, + HEX_INS_PD___BOUNDSCHECK__RSS__RTT___RAW_LO, + HEX_INS_PD___BOUNDSCHECK__RSS__RTT___RAW_HI, + HEX_INS_PD___CMPB_GT__RS__RT_, + HEX_INS_PD___CMPB_EQ__RS__RT_, + HEX_INS_PD___CMPB_GTU__RS__RT_, + HEX_INS_PD___CMPB_EQ__RS___U8_, + HEX_INS_PD___CMPB_GT__RS___S8_, + HEX_INS_PD___CMPB_GTU__RS___U7_, + HEX_INS_PD___CMPH_EQ__RS__RT_, + HEX_INS_PD___CMPH_GT__RS__RT_, + HEX_INS_PD___CMPH_GTU__RS__RT_, + HEX_INS_PD___CMPH_EQ__RS___S8_, + HEX_INS_PD___CMPH_GT__RS___S8_, + HEX_INS_PD___CMPH_GTU__RS___U7_, + HEX_INS_PD___CMP_EQ__RSS__RTT__, + HEX_INS_PD___CMP_GT__RSS__RTT__, + HEX_INS_PD___CMP_GTU__RSS__RTT_, + HEX_INS_PD___BITSCLR__RS___U6_, + HEX_INS_PD____NOT_BITSCLR__RS___U6_, + HEX_INS_PD___BITSSET__RS__RT_, + HEX_INS_PD____NOT_BITSSET__RS__RT_, + HEX_INS_PD___BITSCLR__RS__RT_, + HEX_INS_PD____NOT_BITSCLR__RS__RT_, + HEX_INS_RDD___MASK__PT_, + HEX_INS_PD___TLBMATCH__RSS__RT_, + HEX_INS_PD___RS, + HEX_INS_RD___PS, + HEX_INS_PD___TSTBIT__RS___U5_, + HEX_INS_PD____NOT_TSTBIT__RS___U5_, + HEX_INS_PD___TSTBIT__RS__RT_, + HEX_INS_PD____NOT_TSTBIT__RS__RT_, + HEX_INS_PD___VCMPH_EQ__RSS__RTT_, + HEX_INS_PD___VCMPH_GT__RSS__RTT_, + HEX_INS_PD___VCMPH_GTU__RSS__RTT_, + HEX_INS_PD___VCMPH_EQ__RSS___S8_, + HEX_INS_PD___VCMPH_GT__RSS___S8_, + HEX_INS_PD___VCMPH_GTU__RSS___U7_, + HEX_INS_PD___ANY8__VCMPB_EQ__RSS__RTT__, + HEX_INS_PD___VCMPB_EQ__RSS__RTT_, + HEX_INS_PD___VCMPB_GTU__RSS__RTT_, + HEX_INS_PD___VCMPB_GT__RSS__RTT_, + HEX_INS_PD___VCMPB_EQ__RSS___U8_, + HEX_INS_PD___VCMPB_GT__RSS___S8_, + HEX_INS_PD___VCMPB_GTU__RSS___U7_, + HEX_INS_PD___VCMPW_EQ__RSS__RTT_, + HEX_INS_PD___VCMPW_GT__RSS__RTT_, + HEX_INS_PD___VCMPW_GTU__RSS__RTT_, + HEX_INS_PD___VCMPW_EQ__RSS___S8_, + HEX_INS_PD___VCMPW_GT__RSS___S8_, + HEX_INS_PD___VCMPW_GTU__RSS___U7_, + HEX_INS_RD___VITPACK__PS__PT_, + HEX_INS_RDD___VMUX__PU__RSS__RTT_, + HEX_INS_RDD___ASR__RSS___U6_, + HEX_INS_RDD___LSR__RSS___U6_, + HEX_INS_RDD___ASL__RSS___U6_, + HEX_INS_RDD___ROL__RSS___U6_, + HEX_INS_RD___ASR__RS___U5_, + HEX_INS_RD___LSR__RS___U5_, + HEX_INS_RD___ASL__RS___U5_, + HEX_INS_RD___ROL__RS___U5_, + HEX_INS_RXX__MINUS_EQ__ASR__RSS___U6_, + HEX_INS_RXX__MINUS_EQ__LSR__RSS___U6_, + HEX_INS_RXX__MINUS_EQ__ASL__RSS___U6_, + HEX_INS_RXX__MINUS_EQ__ROL__RSS___U6_, + HEX_INS_RXX__PLUS_EQ__ASR__RSS___U6_, + HEX_INS_RXX__PLUS_EQ__LSR__RSS___U6_, + HEX_INS_RXX__PLUS_EQ__ASL__RSS___U6_, + HEX_INS_RXX__PLUS_EQ__ROL__RSS___U6_, + HEX_INS_RX__MINUS_EQ__ASR__RS___U5_, + HEX_INS_RX__MINUS_EQ__LSR__RS___U5_, + HEX_INS_RX__MINUS_EQ__ASL__RS___U5_, + HEX_INS_RX__MINUS_EQ__ROL__RS___U5_, + HEX_INS_RX__PLUS_EQ__ASR__RS___U5_, + HEX_INS_RX__PLUS_EQ__LSR__RS___U5_, + HEX_INS_RX__PLUS_EQ__ASL__RS___U5_, + HEX_INS_RX__PLUS_EQ__ROL__RS___U5_, + HEX_INS_RX___ADD___U8__ASL__RX___U5__, + HEX_INS_RX___SUB___U8__ASL__RX___U5__, + HEX_INS_RX___ADD___U8__LSR__RX___U5__, + HEX_INS_RX___SUB___U8__LSR__RX___U5__, + HEX_INS_RD___ADDASL__RT__RS___U3_, + HEX_INS_RXX__AND_EQ__ASR__RSS___U6_, + HEX_INS_RXX__AND_EQ__LSR__RSS___U6_, + HEX_INS_RXX__AND_EQ__ASL__RSS___U6_, + HEX_INS_RXX__AND_EQ__ROL__RSS___U6_, + HEX_INS_RXX__OR_EQ__ASR__RSS___U6_, + HEX_INS_RXX__OR_EQ__LSR__RSS___U6_, + HEX_INS_RXX__OR_EQ__ASL__RSS___U6_, + HEX_INS_RXX__OR_EQ__ROL__RSS___U6_, + HEX_INS_RXX____LSR__RSS___U6_, + HEX_INS_RXX____ASL__RSS___U6_, + HEX_INS_RXX____ROL__RSS___U6_, + HEX_INS_RX__AND_EQ__ASR__RS___U5_, + HEX_INS_RX__AND_EQ__LSR__RS___U5_, + HEX_INS_RX__AND_EQ__ASL__RS___U5_, + HEX_INS_RX__AND_EQ__ROL__RS___U5_, + HEX_INS_RX__OR_EQ__ASR__RS___U5_, + HEX_INS_RX__OR_EQ__LSR__RS___U5_, + HEX_INS_RX__OR_EQ__ASL__RS___U5_, + HEX_INS_RX__OR_EQ__ROL__RS___U5_, + HEX_INS_RX____LSR__RS___U5_, + HEX_INS_RX____ASL__RS___U5_, + HEX_INS_RX____ROL__RS___U5_, + HEX_INS_RX___AND___U8__ASL__RX___U5__, + HEX_INS_RX___OR___U8__ASL__RX___U5__, + HEX_INS_RX___AND___U8__LSR__RX___U5__, + HEX_INS_RX___OR___U8__LSR__RX___U5__, + HEX_INS_RDD___ASR__RSS___U6___RND, + HEX_INS_RD___ASR__RS___U5___RND, + HEX_INS_RD___ASL__RS___U5___SAT, + HEX_INS_RDD___ASR__RSS__RT_, + HEX_INS_RDD___LSR__RSS__RT_, + HEX_INS_RDD___ASL__RSS__RT_, + HEX_INS_RDD___LSL__RSS__RT_, + HEX_INS_RD___ASR__RS__RT_, + HEX_INS_RD___LSR__RS__RT_, + HEX_INS_RD___ASL__RS__RT_, + HEX_INS_RD___LSL__RS__RT_, + HEX_INS_RD___LSL___S6__RT_, + HEX_INS_RXX__MINUS_EQ__ASR__RSS__RT_, + HEX_INS_RXX__MINUS_EQ__LSR__RSS__RT_, + HEX_INS_RXX__MINUS_EQ__ASL__RSS__RT_, + HEX_INS_RXX__MINUS_EQ__LSL__RSS__RT_, + HEX_INS_RXX__PLUS_EQ__ASR__RSS__RT_, + HEX_INS_RXX__PLUS_EQ__LSR__RSS__RT_, + HEX_INS_RXX__PLUS_EQ__ASL__RSS__RT_, + HEX_INS_RXX__PLUS_EQ__LSL__RSS__RT_, + HEX_INS_RX__MINUS_EQ__ASR__RS__RT_, + HEX_INS_RX__MINUS_EQ__LSR__RS__RT_, + HEX_INS_RX__MINUS_EQ__ASL__RS__RT_, + HEX_INS_RX__MINUS_EQ__LSL__RS__RT_, + HEX_INS_RX__PLUS_EQ__ASR__RS__RT_, + HEX_INS_RX__PLUS_EQ__LSR__RS__RT_, + HEX_INS_RX__PLUS_EQ__ASL__RS__RT_, + HEX_INS_RX__PLUS_EQ__LSL__RS__RT_, + HEX_INS_RXX__OR_EQ__ASR__RSS__RT_, + HEX_INS_RXX__OR_EQ__LSR__RSS__RT_, + HEX_INS_RXX__OR_EQ__ASL__RSS__RT_, + HEX_INS_RXX__OR_EQ__LSL__RSS__RT_, + HEX_INS_RXX__AND_EQ__ASR__RSS__RT_, + HEX_INS_RXX__AND_EQ__LSR__RSS__RT_, + HEX_INS_RXX__AND_EQ__ASL__RSS__RT_, + HEX_INS_RXX__AND_EQ__LSL__RSS__RT_, + HEX_INS_RXX____ASR__RSS__RT_, + HEX_INS_RXX____LSR__RSS__RT_, + HEX_INS_RXX____ASL__RSS__RT_, + HEX_INS_RXX____LSL__RSS__RT_, + HEX_INS_RX__OR_EQ__ASR__RS__RT_, + HEX_INS_RX__OR_EQ__LSR__RS__RT_, + HEX_INS_RX__OR_EQ__ASL__RS__RT_, + HEX_INS_RX__OR_EQ__LSL__RS__RT_, + HEX_INS_RX__AND_EQ__ASR__RS__RT_, + HEX_INS_RX__AND_EQ__LSR__RS__RT_, + HEX_INS_RX__AND_EQ__ASL__RS__RT_, + HEX_INS_RX__AND_EQ__LSL__RS__RT_, + HEX_INS_RD___ASR__RS__RT___SAT, + HEX_INS_RD___ASL__RS__RT___SAT, + HEX_INS_RDD___VASRH__RSS___U4_, + HEX_INS_RDD___VLSRH__RSS___U4_, + HEX_INS_RDD___VASLH__RSS___U4_, + HEX_INS_RDD___VASRH__RSS___U4___RAW, + HEX_INS_RD___VASRHUB__RSS___U4___RAW, + HEX_INS_RD___VASRHUB__RSS___U4___SAT, + HEX_INS_RDD___VASRH__RSS__RT_, + HEX_INS_RDD___VLSRH__RSS__RT_, + HEX_INS_RDD___VASLH__RSS__RT_, + HEX_INS_RDD___VLSLH__RSS__RT_, + HEX_INS_RDD___VASRW__RSS___U5_, + HEX_INS_RDD___VLSRW__RSS___U5_, + HEX_INS_RDD___VASLW__RSS___U5_, + HEX_INS_RDD___VASRW__RSS__RT_, + HEX_INS_RDD___VLSRW__RSS__RT_, + HEX_INS_RDD___VASLW__RSS__RT_, + HEX_INS_RDD___VLSLW__RSS__RT_, + HEX_INS_RD___VASRW__RSS___U5_, + HEX_INS_RD___VASRW__RSS__RT_, + HEX_INS_DUPLEX_RD_____1___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD_____1___DEALLOC_RETURN, + HEX_INS_DUPLEX_RD_____1___DEALLOCFRAME, + HEX_INS_DUPLEX_RD_____1___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD_____1___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD_____1___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD_____1___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD_____1___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD_____1___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD_____1___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD_____1___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD_____1___JUMPR_LR, + HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD_____1___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD_____1___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD_____1___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD_____1___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD_____1___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD____U6___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD____U6___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD____U6___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD____U6___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD____U6___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD____U6___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD____U6___P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD____U6___RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD____U6___RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD____U6___DEALLOC_RETURN, + HEX_INS_DUPLEX_RD____U6___DEALLOCFRAME, + HEX_INS_DUPLEX_RD____U6___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD____U6___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD____U6___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD____U6___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD____U6___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD____U6___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD____U6___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD____U6___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD____U6___JUMPR_LR, + HEX_INS_DUPLEX_RD___RS___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___RS___DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___RS___DEALLOCFRAME, + HEX_INS_DUPLEX_RD___RS___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___RS___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___RS___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___RS___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___RS___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___RS___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___RS___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___RS___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___RS___JUMPR_LR, + HEX_INS_DUPLEX_RD___RS___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___RS___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___RU___RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___RU___RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___RU___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___RU___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___RU___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___RU___P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___ADD__RS____1____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___ADD__RS____1____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS____1____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__RS____1____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__RS____1____JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS____1____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___ADD__RS____1____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___ADD__RS___1____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___ADD__RS___1____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS___1____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__RS___1____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__RS___1____JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__RS___1____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___ADD__RS___1____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___ADD__RU____1____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___ADD__RU____1____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___ADD__RU____1____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___ADD__RU____1____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___ADD__RU___1____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___ADD__RU___1____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___ADD__RU___1____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___ADD__RU___1____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ADD__SP___U6_2____JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___AND__RS___1____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___1____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___AND__RS___1____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___AND__RS___1____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___1____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___AND__RS___1____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___AND__RS___255____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___AND__RS___255____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___255____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___AND__RS___255____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___AND__RS___255____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___AND__RS___255____JUMPR_LR, + HEX_INS_DUPLEX_RD___AND__RS___255____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___AND__RS___255____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___AND__RU___1____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___AND__RU___1____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___AND__RU___1____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___AND__RU___1____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___AND__RU___255____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___AND__RU___255____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___AND__RU___255____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___AND__RU___255____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMB__RS____U3_0____JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMB__RU____U3_0____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMH__RS____U3_1____JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMH__RU____U3_1____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMUB__RS____U4_0____JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMUB__RU____U4_0____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMUH__RS____U3_1____JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMUH__RU____U3_1____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMW__RS____U4_2____JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMW__RU____U4_2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___MEMW__SP____U5_2____JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___SXTB__RS____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTB__RS____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___SXTB__RS____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___SXTB__RS____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTB__RS____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___SXTB__RS____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___SXTB__RU____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___SXTB__RU____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___SXTB__RU____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___SXTB__RU____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___SXTH__RS____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___SXTH__RS____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTH__RS____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___SXTH__RS____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___SXTH__RS____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___SXTH__RS____JUMPR_LR, + HEX_INS_DUPLEX_RD___SXTH__RS____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___SXTH__RS____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___SXTH__RU____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___SXTH__RU____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___SXTH__RU____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___SXTH__RU____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RD___ZXTH__RS____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RD___ZXTH__RS____DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ZXTH__RS____DEALLOCFRAME, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RD___ZXTH__RS____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RD___ZXTH__RS____JUMPR_LR, + HEX_INS_DUPLEX_RD___ZXTH__RS____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RD___ZXTH__RS____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RD___ZXTH__RU____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RD___ZXTH__RU____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RD___ZXTH__RU____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RD___ZXTH__RU____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0___U2____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RS____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE___0__RU____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___1___U2____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___2___U2____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE___3___U2____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____JUMPR_LR, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___COMBINE__RS___0____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___COMBINE__RU___0____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____DEALLOCFRAME, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RDD___MEMD__SP____U5_3____JUMPR_LR, + HEX_INS_DUPLEX_RE_____1___RD_____1, + HEX_INS_DUPLEX_RE_____1___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE_____1___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE_____1___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE_____1___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE_____1___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE_____1___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE_____1___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE_____1___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE_____1___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE_____1___IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE_____1___IF__P0__RD____0, + HEX_INS_DUPLEX_RE_____1___IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE____U6___RD_____1, + HEX_INS_DUPLEX_RE____U6___RD____U6, + HEX_INS_DUPLEX_RE____U6___RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE____U6___RD___ADD__RS___1_, + HEX_INS_DUPLEX_RE____U6___RD___ADD__SP___U6_2_, + HEX_INS_DUPLEX_RE____U6___RD___AND__RS___1_, + HEX_INS_DUPLEX_RE____U6___RD___AND__RS___255_, + HEX_INS_DUPLEX_RE____U6___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE____U6___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE____U6___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE____U6___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE____U6___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE____U6___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE____U6___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE____U6___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE____U6___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE____U6___IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE____U6___IF__P0__RD____0, + HEX_INS_DUPLEX_RE____U6___IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE____U6___RD___RS, + HEX_INS_DUPLEX_RE____U6___RD___SXTB__RS_, + HEX_INS_DUPLEX_RE____U6___RD___SXTH__RS_, + HEX_INS_DUPLEX_RE____U6___RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___RS___RD_____1, + HEX_INS_DUPLEX_RE___RS___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___RS___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___RS___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___RS___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___RS___IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___RS___IF__P0__RD____0, + HEX_INS_DUPLEX_RE___RS___IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___RU___RD___RS, + HEX_INS_DUPLEX_RE___RU___RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE___RU___RD___ADD__RS___1_, + HEX_INS_DUPLEX_RE___RU___RD___AND__RS___1_, + HEX_INS_DUPLEX_RE___RU___RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___RU___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___RU___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___RU___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___RU___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___RU___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___RU___RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___RU___RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___RU___RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___RU___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___RU___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RD_____1, + HEX_INS_DUPLEX_RE___ADD__RS____1____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___ADD__RS____1____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___ADD__RS____1____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS____1____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS____1____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS____1____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS___1____RD_____1, + HEX_INS_DUPLEX_RE___ADD__RS___1____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___ADD__RS___1____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___ADD__RS___1____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS___1____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS___1____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__RS___1____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___ADD__RU____1____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ADD__RS___1_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___AND__RS___1_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___ADD__RU___1____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD_____1, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__RS___1_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ADD__SP___U6_2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___AND__RS___1_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___RS, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___ADD__SP___U6_2____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___AND__RS___1____RD_____1, + HEX_INS_DUPLEX_RE___AND__RS___1____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___AND__RS___1____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___AND__RS___1____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___AND__RS___1____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___1____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___1____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___1____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___255____RD_____1, + HEX_INS_DUPLEX_RE___AND__RS___255____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___AND__RS___255____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___AND__RS___255____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___AND__RS___255____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___255____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___255____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___AND__RS___255____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___ADD__RS____1_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___AND__RS___1_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___AND__RU___1____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___AND__RU___1____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___AND__RU___1____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___AND__RU___255____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___AND__RU___255____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___AND__RU___255____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___MEMB__RS____U3_0____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMB__RS____U3_0____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___MEMB__RU____U3_0____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___MEMH__RS____U3_1____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMH__RS____U3_1____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMH__RU____U3_1____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMUB__RS____U4_0____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMUB__RS____U4_0____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___MEMUB__RU____U4_0____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMUH__RS____U3_1____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMUH__RS____U3_1____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___MEMUH__RU____U3_1____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___MEMUH__RU____U3_1____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMW__RS____U4_2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMW__RS____U4_2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___MEMW__RU____U4_2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___MEMW__SP____U5_2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___MEMW__SP____U5_2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___SXTB__RS____RD_____1, + HEX_INS_DUPLEX_RE___SXTB__RS____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___SXTB__RS____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___SXTB__RS____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___SXTB__RS____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___SXTB__RS____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___SXTB__RS____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___SXTB__RS____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___SXTB__RU____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___SXTB__RU____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___SXTB__RU____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___SXTH__RS____RD_____1, + HEX_INS_DUPLEX_RE___SXTH__RS____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___SXTH__RS____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___SXTH__RS____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___SXTH__RS____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___SXTH__RS____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___SXTH__RS____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___SXTH__RS____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___SXTB__RS_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___SXTH__RS_, + HEX_INS_DUPLEX_RE___SXTH__RU____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___SXTH__RU____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___SXTH__RU____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RD_____1, + HEX_INS_DUPLEX_RE___ZXTH__RS____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RE___ZXTH__RS____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RE___ZXTH__RS____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RE___ZXTH__RS____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ZXTH__RS____IF__P0__RD____0, + HEX_INS_DUPLEX_RE___ZXTH__RS____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___AND__RS___255_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RE___ZXTH__RU____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___0___U2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE___0__RS____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE___0__RS____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_REE___COMBINE___0__RU____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___1___U2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___2___U2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___COMBINE___3___U2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE__RS___0____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_REE___COMBINE__RS___0____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_REE___COMBINE__RU___0____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_REE___MEMD__SP____U5_3____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RD_____1, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RX___ADD__RS__RX____DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RS__RX____DEALLOCFRAME, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RS__RX____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RS__RX____JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RS__RX____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RX___ADD__RS__RX____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RX___ADD__RU__RX____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RX___ADD__RU__RX____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD_____1, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD____U6, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__RS____1_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__RS___1_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ADD__SP___U6_2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___AND__RS___1_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___AND__RS___255_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___RS, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___SXTB__RS_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___SXTH__RS_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____RD___ZXTH__RS_, + HEX_INS_DUPLEX_RX___ADD__RX___S7____DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX___S7____DEALLOCFRAME, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RX___S7____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RX___S7____JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RD_____1, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_RX___ADD__RX__RS____DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX__RS____DEALLOCFRAME, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_RX___ADD__RX__RS____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____JUMPR_LR, + HEX_INS_DUPLEX_RX___ADD__RX__RS____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_RX___ADD__RX__RS____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_RX___ADD__RX__RU____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_RX___ADD__RX__RU____P0___CMP_EQ__RS___U2_, + HEX_INS_DUPLEX_RY___ADD__RU__RY____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RY___ADD__RU__RY____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RX___S7_, + HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RY___ADD__RY___S7____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_RY___ADD__RY__RU____RX___ADD__RS__RX_, + HEX_INS_DUPLEX_RY___ADD__RY__RU____RX___ADD__RX__RS_, + HEX_INS_DUPLEX_DEALLOCFRAME___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_DEALLOCFRAME___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_DEALLOCFRAME___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_DEALLOCFRAME___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_DEALLOCFRAME___JUMPR_LR, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_DEALLOCFRAME___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___DEALLOCFRAME, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_IF___NOT__P0__RD____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_IF___NOT__P0__RE____0___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___DEALLOCFRAME, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___JUMPR_LR, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RD____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_IF___NOT__P0_NEW__RE____0___IF__P0__RD____0, + HEX_INS_DUPLEX_IF__P0__RD____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_IF__P0__RD____0___DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0__RD____0___DEALLOCFRAME, + HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF__P0__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF__P0__RD____0___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF__P0__RD____0___JUMPR_LR, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_IF__P0__RD____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_IF__P0__RE____0___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_IF__P0__RE____0___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_IF__P0__RE____0___IF__P0__RD____0, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___DEALLOCFRAME, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___JUMPR_LR, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_IF__P0_NEW__RD____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF__P0__RD____0, + HEX_INS_DUPLEX_IF__P0_NEW__RE____0___IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMB__RS____U4_0_____1___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMB__RS____U4_0____RT___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMB__RS____U4_0____RV___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMB__RS____U4_0____RV___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0_____1___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RT___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMB__RU____U4_0____RV___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RTT___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMD__SP____S6_3____RVV___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMH__RS____U3_1____RT___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMH__RS____U3_1____RV___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMH__RS____U3_1____RV___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMH__RU____U3_1____RT___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMH__RU____U3_1____RV___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____0___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMW__RS____U4_2_____1___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMW__RS____U4_2____RT___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMW__RS____U4_2____RV___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMW__RS____U4_2____RV___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____0___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2_____1___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RT___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMW__RU____U4_2____RV___MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RT___MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_MEMW__SP____U5_2____RV___MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RD_____1, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RD___MEMW__SP____U5_2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___0___U2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___1___U2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___2___U2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___COMBINE___3___U2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____RDD___MEMD__SP____U5_3_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____ALLOCFRAME___U5_3_, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__RD____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__RD____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__RD____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__RD____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____MEMD__SP____S6_3____RTT, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____MEMW__SP____U5_2____RT, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____DEALLOC_RETURN, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____DEALLOCFRAME, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0__JUMPR_LR, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF___NOT__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__DEALLOC_RETURN, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0__JUMPR_LR, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__DEALLOC_RETURN_NT, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____IF__P0_NEW__JUMPR_NT_LR, + HEX_INS_DUPLEX_P0___CMP_EQ__RS___U2____JUMPR_LR, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMB__RS____U3_0_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMH__RS____U3_1_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMUB__RS____U4_0_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMUH__RS____U3_1_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RD___MEMW__RS____U4_2_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RDD___COMBINE___0__RS_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____RDD___COMBINE__RS___0_, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0_____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0_____1, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMB__RS____U4_0____RT, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMH__RS____U3_1____RT, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2_____0, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2_____1, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____MEMW__RS____U4_2____RT, + HEX_INS_DUPLEX_P0___CMP_EQ__RU___U2____P0___CMP_EQ__RS___U2_, +}; diff --git a/libr/asm/p/asm_hexagon.c b/libr/asm/p/asm_hexagon.c new file mode 100644 index 0000000000..14cf1256d4 --- /dev/null +++ b/libr/asm/p/asm_hexagon.c @@ -0,0 +1,36 @@ +/* radare - LGPL - Copyright 2018 - xvilka */ + +#include +#include +#include +#include +#include "hexagon.h" +#include "hexagon_insn.h" + +static int disassemble (RAsm *a, RAsmOp *op, const ut8 *buf, int l) +{ + HexInsn hi; + ut32 data = 0; + memset(&hi, 0, sizeof(hi)); + data = r_read_le32(buf); + int size = hexagon_disasm_instruction(data, &hi); + op->size = size; + strcpy(op->buf_asm, hi.mnem); + return size; +} + +RAsmPlugin r_asm_plugin_hexagon = { + .name = "hexagon", + .arch = "hexagon", + .license = "LGPL3", + .bits = 32, + .desc = "Qualcomm Hexagon (QDSP6) V6", + .disassemble = &disassemble, +}; + +#ifndef CORELIB +struct r_lib_struct_t radare_plugin = { + .type = R_LIB_TYPE_ASM, + .data = &r_asm_plugin_hexagon +}; +#endif diff --git a/libr/asm/p/asm_hexagon_gnu.c b/libr/asm/p/asm_hexagon_gnu.c index db8c895300..db04879ce3 100644 --- a/libr/asm/p/asm_hexagon_gnu.c +++ b/libr/asm/p/asm_hexagon_gnu.c @@ -90,8 +90,8 @@ print_insn_hexagon = hexagon_get_disassembler_from_mach(0,0); } RAsmPlugin r_asm_plugin_hexagon_gnu = { - .name = "hexagon", - .arch = "hexagon", + .name = "hexagon.gnu", + .arch = "hexagon.gnu", .bits = 32, .endian = R_SYS_ENDIAN_BIG | R_SYS_ENDIAN_LITTLE, .license = "GPL3", diff --git a/libr/asm/p/hexagon.mk b/libr/asm/p/hexagon.mk new file mode 100644 index 0000000000..a30f5b3da2 --- /dev/null +++ b/libr/asm/p/hexagon.mk @@ -0,0 +1,15 @@ +OBJ_HEXAGON=asm_hexagon.o +OBJ_HEXAGON+=../arch/hexagon/hexagon.o +OBJ_HEXAGON+=../arch/hexagon/hexagon_disas.o + +CFLAGS +=-I../asm/arch/hexagon + +STATIC_OBJ+=${OBJ_HEXAGON} + +TARGET_HEXAGON=asm_hexagon.${EXT_SO} +ifeq ($(WITHPIC),1) +ALL_TARGETS+=${TARGET_HEXAGON} + +${TARGET_HEXAGON}: ${OBJ_HEXAGON} + ${CC} $(call libname,asm_hexagon) ${LDFLAGS} ${CFLAGS} -o ${TARGET_HEXAGON} ${OBJ_HEXAGON} +endif diff --git a/libr/asm/p/hexagon_gnu.mk b/libr/asm/p/hexagon_gnu.mk index 77505ef06b..4de6f5987b 100644 --- a/libr/asm/p/hexagon_gnu.mk +++ b/libr/asm/p/hexagon_gnu.mk @@ -1,14 +1,14 @@ -OBJ_HEXAGON=asm_hexagon_gnu.o -OBJ_HEXAGON+=../arch/hexagon/gnu/hexagon-dis.o -OBJ_HEXAGON+=../arch/hexagon/gnu/hexagon-opc.o -OBJ_HEXAGON+=../arch/hexagon/gnu/safe-ctype.o +OBJ_HEXAGON_GNU=asm_hexagon_gnu.o +OBJ_HEXAGON_GNU+=../arch/hexagon/gnu/hexagon-dis.o +OBJ_HEXAGON_GNU+=../arch/hexagon/gnu/hexagon-opc.o +OBJ_HEXAGON_GNU+=../arch/hexagon/gnu/safe-ctype.o -STATIC_OBJ+=${OBJ_HEXAGON} +STATIC_OBJ+=${OBJ_HEXAGON_GNU} -TARGET_HEXAGON=asm_hexagon_gnu.${EXT_SO} +TARGET_HEXAGON_GNU=asm_hexagon_gnu.${EXT_SO} ifeq ($(WITHPIC),1) -ALL_TARGETS+=${TARGET_HEXAGON} +ALL_TARGETS+=${TARGET_HEXAGON_GNU} -${TARGET_HEXAGON}: ${OBJ_HEXAGON} - ${CC} $(call libname,asm_hexagon_gnu) ${LDFLAGS} ${CFLAGS} -o ${TARGET_HEXAGON} ${OBJ_HEXAGON} +${TARGET_HEXAGON_GNU}: ${OBJ_HEXAGON_GNU} + ${CC} $(call libname,asm_hexagon_gnu) ${LDFLAGS} ${CFLAGS} -o ${TARGET_HEXAGON_GNU} ${OBJ_HEXAGON_GNU} endif diff --git a/libr/include/r_anal.h b/libr/include/r_anal.h index b51c0cf5f8..caa94affc8 100644 --- a/libr/include/r_anal.h +++ b/libr/include/r_anal.h @@ -1672,6 +1672,7 @@ extern RAnalPlugin r_anal_plugin_ebc; extern RAnalPlugin r_anal_plugin_gb; extern RAnalPlugin r_anal_plugin_nios2; extern RAnalPlugin r_anal_plugin_malbolge; +extern RAnalPlugin r_anal_plugin_hexagon; extern RAnalPlugin r_anal_plugin_wasm; extern RAnalPlugin r_anal_plugin_ws; extern RAnalPlugin r_anal_plugin_h8300; diff --git a/libr/include/r_asm.h b/libr/include/r_asm.h index 94a38516c4..31c9f1917e 100644 --- a/libr/include/r_asm.h +++ b/libr/include/r_asm.h @@ -253,6 +253,7 @@ extern RAsmPlugin r_asm_plugin_xtensa; extern RAsmPlugin r_asm_plugin_tricore; extern RAsmPlugin r_asm_plugin_pic; extern RAsmPlugin r_asm_plugin_rsp; +extern RAsmPlugin r_asm_plugin_hexagon; extern RAsmPlugin r_asm_plugin_hexagon_gnu; extern RAsmPlugin r_asm_plugin_wasm; extern RAsmPlugin r_asm_plugin_tms320c64x; diff --git a/plugins.def.cfg b/plugins.def.cfg index ccd098b7c1..b3c269c59a 100644 --- a/plugins.def.cfg +++ b/plugins.def.cfg @@ -12,6 +12,7 @@ anal.dalvik anal.ebc anal.gb anal.h8300 +anal.hexagon anal.i8080 anal.java anal.m68k_cs @@ -57,7 +58,7 @@ asm.cr16 asm.cris_gnu asm.dalvik asm.dcpu16 -asm.hexagon_gnu +asm.hexagon asm.ebc asm.gb asm.h8300 diff --git a/plugins.nogpl.cfg b/plugins.nogpl.cfg index 42c8157769..9711480249 100644 --- a/plugins.nogpl.cfg +++ b/plugins.nogpl.cfg @@ -10,6 +10,7 @@ anal.gb anal.h8300 anal.i8080 anal.java +anal.hexagon anal.m68k anal.malbolge anal.mips_cs @@ -39,6 +40,7 @@ asm.h8300 asm.i4004 asm.i8080 asm.java +asm.hexagon asm.m68k asm.malbolge asm.mips_cs