ld2_advsimd_mult.xml */
| 12196 | |
| 12197 | /* ld2_advsimd_mult.xml */ |
| 12198 | int LD2_advsimd_mult(context *ctx, Instruction *instr) |
| 12199 | { |
| 12200 | int rc = DECODE_STATUS_UNMATCHED; |
| 12201 | /* class iclass_as_no_post_index */ |
| 12202 | /* 0|Q=x|0011000|L=1|000000|opcode=1000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12203 | if((INSWORD & 0xBFFFF000)==0xC408000) { |
| 12204 | decode_fields32(ENC_LD2_ASISDLSE_R2, ctx, instr); |
| 12205 | ctx->t = UINT(ctx->Rt); |
| 12206 | ctx->n = UINT(ctx->Rn); |
| 12207 | ctx->m = 0; |
| 12208 | ctx->wback = FALSE; |
| 12209 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12210 | OK(ENC_LD2_ASISDLSE_R2); |
| 12211 | } |
| 12212 | /* class iclass_as_post_index */ |
| 12213 | /* 0|Q=x|0011001|L=1|0|Rm=xxxxx|opcode=1000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 12214 | if((INSWORD & 0xBFE0F000)==0xCC08000) { |
| 12215 | decode_fields32(ENC_LD2_ASISDLSEP_I2_I, ctx, instr); |
| 12216 | ctx->t = UINT(ctx->Rt); |
| 12217 | ctx->n = UINT(ctx->Rn); |
| 12218 | ctx->m = UINT(ctx->Rm); |
| 12219 | ctx->wback = TRUE; |
| 12220 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 12221 | if(ctx->Rm==0x1f) OK(ENC_LD2_ASISDLSEP_I2_I); |
| 12222 | if(ctx->Rm!=0x1f) OK(ENC_LD2_ASISDLSEP_R2_R); |
| 12223 | } |
| 12224 | /* post-decode pcode */ |
| 12225 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 12226 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 12227 | ctx->esize = (8) << (UINT(ctx->size)); |
| 12228 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 12229 | if(!ctx->opcode) { |
| 12230 | ctx->rpt = 1; |
| 12231 | ctx->selem = 4; |
| 12232 | } |
| 12233 | else if(ctx->opcode==2) { |
| 12234 | ctx->rpt = 4; |
| 12235 | ctx->selem = 1; |
| 12236 | } |
| 12237 | else if(ctx->opcode==4) { |
| 12238 | ctx->rpt = 1; |
| 12239 | ctx->selem = 3; |
| 12240 | } |
| 12241 | else if(ctx->opcode==6) { |
| 12242 | ctx->rpt = 3; |
| 12243 | ctx->selem = 1; |
| 12244 | } |
| 12245 | else if(ctx->opcode==7) { |
| 12246 | ctx->rpt = 1; |
| 12247 | ctx->selem = 1; |
| 12248 | } |
| 12249 | else if(ctx->opcode==8) { |
| 12250 | ctx->rpt = 1; |
| 12251 | ctx->selem = 2; |
| 12252 | } |
| 12253 | else if(ctx->opcode==10) { |
| 12254 | ctx->rpt = 2; |
| 12255 | ctx->selem = 1; |
no test coverage detected