lduminb.xml */
| 16535 | |
| 16536 | /* lduminb.xml */ |
| 16537 | int LDUMINB(context *ctx, Instruction *instr) |
| 16538 | { |
| 16539 | int rc = DECODE_STATUS_UNMATCHED; |
| 16540 | /* class iclass_general */ |
| 16541 | /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=111|00|Rn=xxxxx|Rt=xxxxx */ |
| 16542 | if((INSWORD & 0xFF20FC00)==0x38207000) { |
| 16543 | decode_fields32(ENC_LDUMINAB_32_MEMOP, ctx, instr); |
| 16544 | if(!HaveAtomicExt()) { |
| 16545 | UNDEFINED; |
| 16546 | } |
| 16547 | ctx->t = UINT(ctx->Rt); |
| 16548 | ctx->n = UINT(ctx->Rn); |
| 16549 | ctx->s = UINT(ctx->Rs); |
| 16550 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 16551 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 16552 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 16553 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 16554 | if(!ctx->opc) { |
| 16555 | ctx->op = MemAtomicOp_ADD; |
| 16556 | } |
| 16557 | else if(ctx->opc==1) { |
| 16558 | ctx->op = MemAtomicOp_BIC; |
| 16559 | } |
| 16560 | else if(ctx->opc==2) { |
| 16561 | ctx->op = MemAtomicOp_EOR; |
| 16562 | } |
| 16563 | else if(ctx->opc==3) { |
| 16564 | ctx->op = MemAtomicOp_ORR; |
| 16565 | } |
| 16566 | else if(ctx->opc==4) { |
| 16567 | ctx->op = MemAtomicOp_SMAX; |
| 16568 | } |
| 16569 | else if(ctx->opc==5) { |
| 16570 | ctx->op = MemAtomicOp_SMIN; |
| 16571 | } |
| 16572 | else if(ctx->opc==6) { |
| 16573 | ctx->op = MemAtomicOp_UMAX; |
| 16574 | } |
| 16575 | else if(ctx->opc==7) { |
| 16576 | ctx->op = MemAtomicOp_UMIN; |
| 16577 | } |
| 16578 | ctx->tag_checked = ctx->n!=0x1f; |
| 16579 | /* regular aliases */ |
| 16580 | if(ctx->A==0 && ctx->Rt==0x1f) return STUMINB_LDUMINB(ctx, instr); |
| 16581 | if(ctx->A==1 && ctx->R==0) OK(ENC_LDUMINAB_32_MEMOP); |
| 16582 | if(ctx->A==1 && ctx->R==1) OK(ENC_LDUMINALB_32_MEMOP); |
| 16583 | if(ctx->A==0 && ctx->R==0) OK(ENC_LDUMINB_32_MEMOP); |
| 16584 | if(ctx->A==0 && ctx->R==1) OK(ENC_LDUMINLB_32_MEMOP); |
| 16585 | } |
| 16586 | return rc; |
| 16587 | } |
| 16588 | |
| 16589 | /* lduminh.xml */ |
| 16590 | int LDUMINH(context *ctx, Instruction *instr) |
no test coverage detected