ldsmaxb.xml */
| 15641 | |
| 15642 | /* ldsmaxb.xml */ |
| 15643 | int LDSMAXB(context *ctx, Instruction *instr) |
| 15644 | { |
| 15645 | int rc = DECODE_STATUS_UNMATCHED; |
| 15646 | /* class iclass_general */ |
| 15647 | /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=100|00|Rn=xxxxx|Rt=xxxxx */ |
| 15648 | if((INSWORD & 0xFF20FC00)==0x38204000) { |
| 15649 | decode_fields32(ENC_LDSMAXAB_32_MEMOP, ctx, instr); |
| 15650 | if(!HaveAtomicExt()) { |
| 15651 | UNDEFINED; |
| 15652 | } |
| 15653 | ctx->t = UINT(ctx->Rt); |
| 15654 | ctx->n = UINT(ctx->Rn); |
| 15655 | ctx->s = UINT(ctx->Rs); |
| 15656 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 15657 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 15658 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 15659 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 15660 | if(!ctx->opc) { |
| 15661 | ctx->op = MemAtomicOp_ADD; |
| 15662 | } |
| 15663 | else if(ctx->opc==1) { |
| 15664 | ctx->op = MemAtomicOp_BIC; |
| 15665 | } |
| 15666 | else if(ctx->opc==2) { |
| 15667 | ctx->op = MemAtomicOp_EOR; |
| 15668 | } |
| 15669 | else if(ctx->opc==3) { |
| 15670 | ctx->op = MemAtomicOp_ORR; |
| 15671 | } |
| 15672 | else if(ctx->opc==4) { |
| 15673 | ctx->op = MemAtomicOp_SMAX; |
| 15674 | } |
| 15675 | else if(ctx->opc==5) { |
| 15676 | ctx->op = MemAtomicOp_SMIN; |
| 15677 | } |
| 15678 | else if(ctx->opc==6) { |
| 15679 | ctx->op = MemAtomicOp_UMAX; |
| 15680 | } |
| 15681 | else if(ctx->opc==7) { |
| 15682 | ctx->op = MemAtomicOp_UMIN; |
| 15683 | } |
| 15684 | ctx->tag_checked = ctx->n!=0x1f; |
| 15685 | /* regular aliases */ |
| 15686 | if(ctx->A==0 && ctx->Rt==0x1f) return STSMAXB_LDSMAXB(ctx, instr); |
| 15687 | if(ctx->A==1 && ctx->R==0) OK(ENC_LDSMAXAB_32_MEMOP); |
| 15688 | if(ctx->A==1 && ctx->R==1) OK(ENC_LDSMAXALB_32_MEMOP); |
| 15689 | if(ctx->A==0 && ctx->R==0) OK(ENC_LDSMAXB_32_MEMOP); |
| 15690 | if(ctx->A==0 && ctx->R==1) OK(ENC_LDSMAXLB_32_MEMOP); |
| 15691 | } |
| 15692 | return rc; |
| 15693 | } |
| 15694 | |
| 15695 | /* ldsmaxh.xml */ |
| 15696 | int LDSMAXH(context *ctx, Instruction *instr) |
no test coverage detected