stnp_gen.xml */
| 25364 | |
| 25365 | /* stnp_gen.xml */ |
| 25366 | int STNP_gen(context *ctx, Instruction *instr) |
| 25367 | { |
| 25368 | int rc = DECODE_STATUS_UNMATCHED; |
| 25369 | /* class iclass_signed_scaled_offset */ |
| 25370 | /* opc=x0|101|V=0|000|L=0|imm7=xxxxxxx|Rt2=xxxxx|Rn=xxxxx|Rt=xxxxx */ |
| 25371 | if((INSWORD & 0x7FC00000)==0x28000000) { |
| 25372 | decode_fields32(ENC_STNP_32_LDSTNAPAIR_OFFS, ctx, instr); |
| 25373 | if(ctx->opc==0) OK(ENC_STNP_32_LDSTNAPAIR_OFFS); |
| 25374 | if(ctx->opc==2) OK(ENC_STNP_64_LDSTNAPAIR_OFFS); |
| 25375 | } |
| 25376 | /* post-decode pcode */ |
| 25377 | ctx->n = UINT(ctx->Rn); |
| 25378 | ctx->t = UINT(ctx->Rt); |
| 25379 | ctx->t2 = UINT(ctx->Rt2); |
| 25380 | ctx->acctype = ctx->AccType_STREAM; |
| 25381 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 25382 | if(SLICE(ctx->opc,0,0)==1) { |
| 25383 | UNDEFINED; |
| 25384 | } |
| 25385 | ctx->scale = 2+UINT(SLICE(ctx->opc,1,1)); |
| 25386 | ctx->datasize = (8) << (ctx->scale); |
| 25387 | ctx->offset = LSL(SignExtend(ctx->imm7,7),ctx->scale); |
| 25388 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 25389 | ctx->rt_unknown = FALSE; |
| 25390 | if(ctx->memop==MemOp_LOAD && ctx->t==ctx->t2) { |
| 25391 | ctx->c = ConstrainUnpredictable(Unpredictable_LDPOVERLAP); |
| 25392 | // assert |
| 25393 | // switch on constraint |
| 25394 | } |
| 25395 | return rc; |
| 25396 | } |
| 25397 | |
| 25398 | /* stp_fpsimd.xml */ |
| 25399 | int STP_fpsimd(context *ctx, Instruction *instr) |
no test coverage detected