ldumaxb.xml */
| 16372 | |
| 16373 | /* ldumaxb.xml */ |
| 16374 | int LDUMAXB(context *ctx, Instruction *instr) |
| 16375 | { |
| 16376 | int rc = DECODE_STATUS_UNMATCHED; |
| 16377 | /* class iclass_general */ |
| 16378 | /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=110|00|Rn=xxxxx|Rt=xxxxx */ |
| 16379 | if((INSWORD & 0xFF20FC00)==0x38206000) { |
| 16380 | decode_fields32(ENC_LDUMAXAB_32_MEMOP, ctx, instr); |
| 16381 | if(!HaveAtomicExt()) { |
| 16382 | UNDEFINED; |
| 16383 | } |
| 16384 | ctx->t = UINT(ctx->Rt); |
| 16385 | ctx->n = UINT(ctx->Rn); |
| 16386 | ctx->s = UINT(ctx->Rs); |
| 16387 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 16388 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 16389 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 16390 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 16391 | if(!ctx->opc) { |
| 16392 | ctx->op = MemAtomicOp_ADD; |
| 16393 | } |
| 16394 | else if(ctx->opc==1) { |
| 16395 | ctx->op = MemAtomicOp_BIC; |
| 16396 | } |
| 16397 | else if(ctx->opc==2) { |
| 16398 | ctx->op = MemAtomicOp_EOR; |
| 16399 | } |
| 16400 | else if(ctx->opc==3) { |
| 16401 | ctx->op = MemAtomicOp_ORR; |
| 16402 | } |
| 16403 | else if(ctx->opc==4) { |
| 16404 | ctx->op = MemAtomicOp_SMAX; |
| 16405 | } |
| 16406 | else if(ctx->opc==5) { |
| 16407 | ctx->op = MemAtomicOp_SMIN; |
| 16408 | } |
| 16409 | else if(ctx->opc==6) { |
| 16410 | ctx->op = MemAtomicOp_UMAX; |
| 16411 | } |
| 16412 | else if(ctx->opc==7) { |
| 16413 | ctx->op = MemAtomicOp_UMIN; |
| 16414 | } |
| 16415 | ctx->tag_checked = ctx->n!=0x1f; |
| 16416 | /* regular aliases */ |
| 16417 | if(ctx->A==0 && ctx->Rt==0x1f) return STUMAXB_LDUMAXB(ctx, instr); |
| 16418 | if(ctx->A==1 && ctx->R==0) OK(ENC_LDUMAXAB_32_MEMOP); |
| 16419 | if(ctx->A==1 && ctx->R==1) OK(ENC_LDUMAXALB_32_MEMOP); |
| 16420 | if(ctx->A==0 && ctx->R==0) OK(ENC_LDUMAXB_32_MEMOP); |
| 16421 | if(ctx->A==0 && ctx->R==1) OK(ENC_LDUMAXLB_32_MEMOP); |
| 16422 | } |
| 16423 | return rc; |
| 16424 | } |
| 16425 | |
| 16426 | /* ldumaxh.xml */ |
| 16427 | int LDUMAXH(context *ctx, Instruction *instr) |
no test coverage detected