st3_advsimd_mult.xml */
| 24213 | |
| 24214 | /* st3_advsimd_mult.xml */ |
| 24215 | int ST3_advsimd_mult(context *ctx, Instruction *instr) |
| 24216 | { |
| 24217 | int rc = DECODE_STATUS_UNMATCHED; |
| 24218 | /* class iclass_as_no_post_index */ |
| 24219 | /* 0|Q=x|0011000|L=0|000000|opcode=0100|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24220 | if((INSWORD & 0xBFFFF000)==0xC004000) { |
| 24221 | decode_fields32(ENC_ST3_ASISDLSE_R3, ctx, instr); |
| 24222 | ctx->t = UINT(ctx->Rt); |
| 24223 | ctx->n = UINT(ctx->Rn); |
| 24224 | ctx->m = 0; |
| 24225 | ctx->wback = FALSE; |
| 24226 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24227 | OK(ENC_ST3_ASISDLSE_R3); |
| 24228 | } |
| 24229 | /* class iclass_as_post_index */ |
| 24230 | /* 0|Q=x|0011001|L=0|0|Rm=xxxxx|opcode=0100|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24231 | if((INSWORD & 0xBFE0F000)==0xC804000) { |
| 24232 | decode_fields32(ENC_ST3_ASISDLSEP_I3_I, ctx, instr); |
| 24233 | ctx->t = UINT(ctx->Rt); |
| 24234 | ctx->n = UINT(ctx->Rn); |
| 24235 | ctx->m = UINT(ctx->Rm); |
| 24236 | ctx->wback = TRUE; |
| 24237 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24238 | if(ctx->Rm==0x1f) OK(ENC_ST3_ASISDLSEP_I3_I); |
| 24239 | if(ctx->Rm!=0x1f) OK(ENC_ST3_ASISDLSEP_R3_R); |
| 24240 | } |
| 24241 | /* post-decode pcode */ |
| 24242 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 24243 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 24244 | ctx->esize = (8) << (UINT(ctx->size)); |
| 24245 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 24246 | if(!ctx->opcode) { |
| 24247 | ctx->rpt = 1; |
| 24248 | ctx->selem = 4; |
| 24249 | } |
| 24250 | else if(ctx->opcode==2) { |
| 24251 | ctx->rpt = 4; |
| 24252 | ctx->selem = 1; |
| 24253 | } |
| 24254 | else if(ctx->opcode==4) { |
| 24255 | ctx->rpt = 1; |
| 24256 | ctx->selem = 3; |
| 24257 | } |
| 24258 | else if(ctx->opcode==6) { |
| 24259 | ctx->rpt = 3; |
| 24260 | ctx->selem = 1; |
| 24261 | } |
| 24262 | else if(ctx->opcode==7) { |
| 24263 | ctx->rpt = 1; |
| 24264 | ctx->selem = 1; |
| 24265 | } |
| 24266 | else if(ctx->opcode==8) { |
| 24267 | ctx->rpt = 1; |
| 24268 | ctx->selem = 2; |
| 24269 | } |
| 24270 | else if(ctx->opcode==10) { |
| 24271 | ctx->rpt = 2; |
| 24272 | ctx->selem = 1; |
no test coverage detected