ld3_advsimd_mult.xml */
| 12412 | |
| 12413 | /* ld3_advsimd_mult.xml */ |
| 12414 | int LD3_advsimd_mult(context *ctx, Instruction *instr) |
| 12415 | { |
| 12416 | int rc = DECODE_STATUS_UNMATCHED; |
| 12417 | /* class iclass_as_no_post_index */ |
| 12418 | /* 0|Q=x|0011000|L=1|000000|opcode=0100|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12419 | if((INSWORD & 0xBFFFF000)==0xC404000) { |
| 12420 | decode_fields32(ENC_LD3_ASISDLSE_R3, ctx, instr); |
| 12421 | ctx->t = UINT(ctx->Rt); |
| 12422 | ctx->n = UINT(ctx->Rn); |
| 12423 | ctx->m = 0; |
| 12424 | ctx->wback = FALSE; |
| 12425 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12426 | OK(ENC_LD3_ASISDLSE_R3); |
| 12427 | } |
| 12428 | /* class iclass_as_post_index */ |
| 12429 | /* 0|Q=x|0011001|L=1|0|Rm=xxxxx|opcode=0100|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12430 | if((INSWORD & 0xBFE0F000)==0xCC04000) { |
| 12431 | decode_fields32(ENC_LD3_ASISDLSEP_I3_I, ctx, instr); |
| 12432 | ctx->t = UINT(ctx->Rt); |
| 12433 | ctx->n = UINT(ctx->Rn); |
| 12434 | ctx->m = UINT(ctx->Rm); |
| 12435 | ctx->wback = TRUE; |
| 12436 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12437 | if(ctx->Rm==0x1f) OK(ENC_LD3_ASISDLSEP_I3_I); |
| 12438 | if(ctx->Rm!=0x1f) OK(ENC_LD3_ASISDLSEP_R3_R); |
| 12439 | } |
| 12440 | /* post-decode pcode */ |
| 12441 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 12442 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 12443 | ctx->esize = (8) << (UINT(ctx->size)); |
| 12444 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 12445 | if(!ctx->opcode) { |
| 12446 | ctx->rpt = 1; |
| 12447 | ctx->selem = 4; |
| 12448 | } |
| 12449 | else if(ctx->opcode==2) { |
| 12450 | ctx->rpt = 4; |
| 12451 | ctx->selem = 1; |
| 12452 | } |
| 12453 | else if(ctx->opcode==4) { |
| 12454 | ctx->rpt = 1; |
| 12455 | ctx->selem = 3; |
| 12456 | } |
| 12457 | else if(ctx->opcode==6) { |
| 12458 | ctx->rpt = 3; |
| 12459 | ctx->selem = 1; |
| 12460 | } |
| 12461 | else if(ctx->opcode==7) { |
| 12462 | ctx->rpt = 1; |
| 12463 | ctx->selem = 1; |
| 12464 | } |
| 12465 | else if(ctx->opcode==8) { |
| 12466 | ctx->rpt = 1; |
| 12467 | ctx->selem = 2; |
| 12468 | } |
| 12469 | else if(ctx->opcode==10) { |
| 12470 | ctx->rpt = 2; |
| 12471 | ctx->selem = 1; |
no test coverage detected