ld4_advsimd_mult.xml */
| 12628 | |
| 12629 | /* ld4_advsimd_mult.xml */ |
| 12630 | int LD4_advsimd_mult(context *ctx, Instruction *instr) |
| 12631 | { |
| 12632 | int rc = DECODE_STATUS_UNMATCHED; |
| 12633 | /* class iclass_as_no_post_index */ |
| 12634 | /* 0|Q=x|0011000|L=1|000000|opcode=0000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12635 | if((INSWORD & 0xBFFFF000)==0xC400000) { |
| 12636 | decode_fields32(ENC_LD4_ASISDLSE_R4, ctx, instr); |
| 12637 | ctx->t = UINT(ctx->Rt); |
| 12638 | ctx->n = UINT(ctx->Rn); |
| 12639 | ctx->m = 0; |
| 12640 | ctx->wback = FALSE; |
| 12641 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12642 | OK(ENC_LD4_ASISDLSE_R4); |
| 12643 | } |
| 12644 | /* class iclass_as_post_index */ |
| 12645 | /* 0|Q=x|0011001|L=1|0|Rm=xxxxx|opcode=0000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12646 | if((INSWORD & 0xBFE0F000)==0xCC00000) { |
| 12647 | decode_fields32(ENC_LD4_ASISDLSEP_I4_I, ctx, instr); |
| 12648 | ctx->t = UINT(ctx->Rt); |
| 12649 | ctx->n = UINT(ctx->Rn); |
| 12650 | ctx->m = UINT(ctx->Rm); |
| 12651 | ctx->wback = TRUE; |
| 12652 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12653 | if(ctx->Rm==0x1f) OK(ENC_LD4_ASISDLSEP_I4_I); |
| 12654 | if(ctx->Rm!=0x1f) OK(ENC_LD4_ASISDLSEP_R4_R); |
| 12655 | } |
| 12656 | /* post-decode pcode */ |
| 12657 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 12658 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 12659 | ctx->esize = (8) << (UINT(ctx->size)); |
| 12660 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 12661 | if(!ctx->opcode) { |
| 12662 | ctx->rpt = 1; |
| 12663 | ctx->selem = 4; |
| 12664 | } |
| 12665 | else if(ctx->opcode==2) { |
| 12666 | ctx->rpt = 4; |
| 12667 | ctx->selem = 1; |
| 12668 | } |
| 12669 | else if(ctx->opcode==4) { |
| 12670 | ctx->rpt = 1; |
| 12671 | ctx->selem = 3; |
| 12672 | } |
| 12673 | else if(ctx->opcode==6) { |
| 12674 | ctx->rpt = 3; |
| 12675 | ctx->selem = 1; |
| 12676 | } |
| 12677 | else if(ctx->opcode==7) { |
| 12678 | ctx->rpt = 1; |
| 12679 | ctx->selem = 1; |
| 12680 | } |
| 12681 | else if(ctx->opcode==8) { |
| 12682 | ctx->rpt = 1; |
| 12683 | ctx->selem = 2; |
| 12684 | } |
| 12685 | else if(ctx->opcode==10) { |
| 12686 | ctx->rpt = 2; |
| 12687 | ctx->selem = 1; |
no test coverage detected