movk.xml */
| 17530 | |
| 17531 | /* movk.xml */ |
| 17532 | int MOVK(context *ctx, Instruction *instr) |
| 17533 | { |
| 17534 | int rc = DECODE_STATUS_UNMATCHED; |
| 17535 | /* class iclass_imm18_packed */ |
| 17536 | /* sf=x|opc=11|100101|hw=xx|imm16=xxxxxxxxxxxxxxxx|Rd=xxxxx */ |
| 17537 | if((INSWORD & 0x7F800000)==0x72800000) { |
| 17538 | decode_fields32(ENC_MOVK_32_MOVEWIDE, ctx, instr); |
| 17539 | ctx->d = UINT(ctx->Rd); |
| 17540 | ctx->datasize = (ctx->sf==1) ? 0x40 : 0x20; |
| 17541 | ctx->imm = ctx->imm16; |
| 17542 | if(!ctx->opc) { |
| 17543 | ctx->opcode = MoveWideOp_N; |
| 17544 | } |
| 17545 | else if(ctx->opc==2) { |
| 17546 | ctx->opcode = MoveWideOp_Z; |
| 17547 | } |
| 17548 | else if(ctx->opc==3) { |
| 17549 | ctx->opcode = MoveWideOp_K; |
| 17550 | } |
| 17551 | else { |
| 17552 | UNDEFINED; |
| 17553 | } |
| 17554 | if(ctx->sf==0 && SLICE(ctx->hw,1,1)==1) { |
| 17555 | UNDEFINED; |
| 17556 | } |
| 17557 | ctx->pos = UINT((ctx->hw<<4)); |
| 17558 | if(ctx->sf==0 && !(ctx->hw&2)) OK(ENC_MOVK_32_MOVEWIDE); |
| 17559 | if(ctx->sf==1) OK(ENC_MOVK_64_MOVEWIDE); |
| 17560 | } |
| 17561 | return rc; |
| 17562 | } |
| 17563 | |
| 17564 | /* movn.xml */ |
| 17565 | int MOVN(context *ctx, Instruction *instr) |
no test coverage detected