prfm_reg.xml */
| 19273 | |
| 19274 | /* prfm_reg.xml */ |
| 19275 | int PRFM_reg(context *ctx, Instruction *instr) |
| 19276 | { |
| 19277 | int rc = DECODE_STATUS_UNMATCHED; |
| 19278 | /* class iclass_general */ |
| 19279 | /* size=11|111|V=0|00|opc=10|1|Rm=xxxxx|option=xxx|S=x|10|Rn=xxxxx|Rt=xxxxx */ |
| 19280 | if((INSWORD & 0xFFE00C00)==0xF8A00800) { |
| 19281 | decode_fields32(ENC_PRFM_P_LDST_REGOFF, ctx, instr); |
| 19282 | ctx->wback = FALSE; |
| 19283 | ctx->postindex = FALSE; |
| 19284 | ctx->scale = UINT(ctx->size); |
| 19285 | if(SLICE(ctx->option,1,1)==0) { |
| 19286 | UNDEFINED; |
| 19287 | } |
| 19288 | ctx->extend_type = DecodeRegExtend(ctx->option); |
| 19289 | ctx->shift = (ctx->S==1) ? ctx->scale : 0; |
| 19290 | OK(ENC_PRFM_P_LDST_REGOFF); |
| 19291 | } |
| 19292 | /* post-decode pcode */ |
| 19293 | ctx->n = UINT(ctx->Rn); |
| 19294 | ctx->t = UINT(ctx->Rt); |
| 19295 | ctx->m = UINT(ctx->Rm); |
| 19296 | ctx->acctype = ctx->AccType_NORMAL; |
| 19297 | if(SLICE(ctx->opc,1,1)==0) { |
| 19298 | if(SLICE(ctx->opc,0,0)==1) { |
| 19299 | ctx->memop = MemOp_LOAD; |
| 19300 | }; |
| 19301 | if(ctx->size==3) { |
| 19302 | ctx->regsize = 0x40; |
| 19303 | }; |
| 19304 | ctx->signed_ = FALSE; |
| 19305 | } |
| 19306 | else { |
| 19307 | if(ctx->size==3) { |
| 19308 | ctx->memop = MemOp_PREFETCH; |
| 19309 | if(SLICE(ctx->opc,0,0)==1) { |
| 19310 | UNDEFINED; |
| 19311 | } |
| 19312 | } |
| 19313 | else { |
| 19314 | ctx->memop = MemOp_LOAD; |
| 19315 | if(ctx->size==2 && SLICE(ctx->opc,0,0)==1) { |
| 19316 | UNDEFINED; |
| 19317 | } |
| 19318 | if(SLICE(ctx->opc,0,0)==1) { |
| 19319 | ctx->regsize = 0x20; |
| 19320 | }; |
| 19321 | ctx->signed_ = TRUE; |
| 19322 | } |
| 19323 | } |
| 19324 | ctx->datasize = (8) << (ctx->scale); |
| 19325 | ctx->tag_checked = ctx->memop!=MemOp_PREFETCH; |
| 19326 | ctx->wb_unknown = FALSE; |
| 19327 | ctx->rt_unknown = FALSE; |
| 19328 | if(ctx->memop==MemOp_LOAD && ctx->wback && ctx->n==ctx->t && ctx->n!=0x1f) { |
| 19329 | // assignment from ConstrainUnpredictable() |
| 19330 | // assert |
| 19331 | // switch on constraint |
| 19332 | } |
no test coverage detected