st4_advsimd_mult.xml */
| 24360 | |
| 24361 | /* st4_advsimd_mult.xml */ |
| 24362 | int ST4_advsimd_mult(context *ctx, Instruction *instr) |
| 24363 | { |
| 24364 | int rc = DECODE_STATUS_UNMATCHED; |
| 24365 | /* class iclass_as_no_post_index */ |
| 24366 | /* 0|Q=x|0011000|L=0|000000|opcode=0000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24367 | if((INSWORD & 0xBFFFF000)==0xC000000) { |
| 24368 | decode_fields32(ENC_ST4_ASISDLSE_R4, ctx, instr); |
| 24369 | ctx->t = UINT(ctx->Rt); |
| 24370 | ctx->n = UINT(ctx->Rn); |
| 24371 | ctx->m = 0; |
| 24372 | ctx->wback = FALSE; |
| 24373 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24374 | OK(ENC_ST4_ASISDLSE_R4); |
| 24375 | } |
| 24376 | /* class iclass_as_post_index */ |
| 24377 | /* 0|Q=x|0011001|L=0|0|Rm=xxxxx|opcode=0000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24378 | if((INSWORD & 0xBFE0F000)==0xC800000) { |
| 24379 | decode_fields32(ENC_ST4_ASISDLSEP_I4_I, ctx, instr); |
| 24380 | ctx->t = UINT(ctx->Rt); |
| 24381 | ctx->n = UINT(ctx->Rn); |
| 24382 | ctx->m = UINT(ctx->Rm); |
| 24383 | ctx->wback = TRUE; |
| 24384 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24385 | if(ctx->Rm==0x1f) OK(ENC_ST4_ASISDLSEP_I4_I); |
| 24386 | if(ctx->Rm!=0x1f) OK(ENC_ST4_ASISDLSEP_R4_R); |
| 24387 | } |
| 24388 | /* post-decode pcode */ |
| 24389 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 24390 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 24391 | ctx->esize = (8) << (UINT(ctx->size)); |
| 24392 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 24393 | if(!ctx->opcode) { |
| 24394 | ctx->rpt = 1; |
| 24395 | ctx->selem = 4; |
| 24396 | } |
| 24397 | else if(ctx->opcode==2) { |
| 24398 | ctx->rpt = 4; |
| 24399 | ctx->selem = 1; |
| 24400 | } |
| 24401 | else if(ctx->opcode==4) { |
| 24402 | ctx->rpt = 1; |
| 24403 | ctx->selem = 3; |
| 24404 | } |
| 24405 | else if(ctx->opcode==6) { |
| 24406 | ctx->rpt = 3; |
| 24407 | ctx->selem = 1; |
| 24408 | } |
| 24409 | else if(ctx->opcode==7) { |
| 24410 | ctx->rpt = 1; |
| 24411 | ctx->selem = 1; |
| 24412 | } |
| 24413 | else if(ctx->opcode==8) { |
| 24414 | ctx->rpt = 1; |
| 24415 | ctx->selem = 2; |
| 24416 | } |
| 24417 | else if(ctx->opcode==10) { |
| 24418 | ctx->rpt = 2; |
| 24419 | ctx->selem = 1; |
no test coverage detected