ldeorb.xml */
| 13863 | |
| 13864 | /* ldeorb.xml */ |
| 13865 | int LDEORB(context *ctx, Instruction *instr) |
| 13866 | { |
| 13867 | int rc = DECODE_STATUS_UNMATCHED; |
| 13868 | /* class iclass_general */ |
| 13869 | /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=010|00|Rn=xxxxx|Rt=xxxxx */ |
| 13870 | if((INSWORD & 0xFF20FC00)==0x38202000) { |
| 13871 | decode_fields32(ENC_LDEORAB_32_MEMOP, ctx, instr); |
| 13872 | if(!HaveAtomicExt()) { |
| 13873 | UNDEFINED; |
| 13874 | } |
| 13875 | ctx->t = UINT(ctx->Rt); |
| 13876 | ctx->n = UINT(ctx->Rn); |
| 13877 | ctx->s = UINT(ctx->Rs); |
| 13878 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 13879 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 13880 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 13881 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 13882 | if(!ctx->opc) { |
| 13883 | ctx->op = MemAtomicOp_ADD; |
| 13884 | } |
| 13885 | else if(ctx->opc==1) { |
| 13886 | ctx->op = MemAtomicOp_BIC; |
| 13887 | } |
| 13888 | else if(ctx->opc==2) { |
| 13889 | ctx->op = MemAtomicOp_EOR; |
| 13890 | } |
| 13891 | else if(ctx->opc==3) { |
| 13892 | ctx->op = MemAtomicOp_ORR; |
| 13893 | } |
| 13894 | else if(ctx->opc==4) { |
| 13895 | ctx->op = MemAtomicOp_SMAX; |
| 13896 | } |
| 13897 | else if(ctx->opc==5) { |
| 13898 | ctx->op = MemAtomicOp_SMIN; |
| 13899 | } |
| 13900 | else if(ctx->opc==6) { |
| 13901 | ctx->op = MemAtomicOp_UMAX; |
| 13902 | } |
| 13903 | else if(ctx->opc==7) { |
| 13904 | ctx->op = MemAtomicOp_UMIN; |
| 13905 | } |
| 13906 | ctx->tag_checked = ctx->n!=0x1f; |
| 13907 | /* regular aliases */ |
| 13908 | if(ctx->A==0 && ctx->Rt==0x1f) return STEORB_LDEORB(ctx, instr); |
| 13909 | if(ctx->A==1 && ctx->R==0) OK(ENC_LDEORAB_32_MEMOP); |
| 13910 | if(ctx->A==1 && ctx->R==1) OK(ENC_LDEORALB_32_MEMOP); |
| 13911 | if(ctx->A==0 && ctx->R==0) OK(ENC_LDEORB_32_MEMOP); |
| 13912 | if(ctx->A==0 && ctx->R==1) OK(ENC_LDEORLB_32_MEMOP); |
| 13913 | } |
| 13914 | return rc; |
| 13915 | } |
| 13916 | |
| 13917 | /* ldeorh.xml */ |
| 13918 | int LDEORH(context *ctx, Instruction *instr) |
no test coverage detected