ldsminh.xml */
| 15857 | |
| 15858 | /* ldsminh.xml */ |
| 15859 | int LDSMINH(context *ctx, Instruction *instr) |
| 15860 | { |
| 15861 | int rc = DECODE_STATUS_UNMATCHED; |
| 15862 | /* class iclass_general */ |
| 15863 | /* size=01|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=101|00|Rn=xxxxx|Rt=xxxxx */ |
| 15864 | if((INSWORD & 0xFF20FC00)==0x78205000) { |
| 15865 | decode_fields32(ENC_LDSMINAH_32_MEMOP, ctx, instr); |
| 15866 | if(!HaveAtomicExt()) { |
| 15867 | UNDEFINED; |
| 15868 | } |
| 15869 | ctx->t = UINT(ctx->Rt); |
| 15870 | ctx->n = UINT(ctx->Rn); |
| 15871 | ctx->s = UINT(ctx->Rs); |
| 15872 | ctx->datasize = (8) << (UINT(ctx->size)); |
| 15873 | ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20; |
| 15874 | ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 15875 | ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW; |
| 15876 | if(!ctx->opc) { |
| 15877 | ctx->op = MemAtomicOp_ADD; |
| 15878 | } |
| 15879 | else if(ctx->opc==1) { |
| 15880 | ctx->op = MemAtomicOp_BIC; |
| 15881 | } |
| 15882 | else if(ctx->opc==2) { |
| 15883 | ctx->op = MemAtomicOp_EOR; |
| 15884 | } |
| 15885 | else if(ctx->opc==3) { |
| 15886 | ctx->op = MemAtomicOp_ORR; |
| 15887 | } |
| 15888 | else if(ctx->opc==4) { |
| 15889 | ctx->op = MemAtomicOp_SMAX; |
| 15890 | } |
| 15891 | else if(ctx->opc==5) { |
| 15892 | ctx->op = MemAtomicOp_SMIN; |
| 15893 | } |
| 15894 | else if(ctx->opc==6) { |
| 15895 | ctx->op = MemAtomicOp_UMAX; |
| 15896 | } |
| 15897 | else if(ctx->opc==7) { |
| 15898 | ctx->op = MemAtomicOp_UMIN; |
| 15899 | } |
| 15900 | ctx->tag_checked = ctx->n!=0x1f; |
| 15901 | /* regular aliases */ |
| 15902 | if(ctx->A==0 && ctx->Rt==0x1f) return STSMINH_LDSMINH(ctx, instr); |
| 15903 | if(ctx->A==1 && ctx->R==0) OK(ENC_LDSMINAH_32_MEMOP); |
| 15904 | if(ctx->A==1 && ctx->R==1) OK(ENC_LDSMINALH_32_MEMOP); |
| 15905 | if(ctx->A==0 && ctx->R==0) OK(ENC_LDSMINH_32_MEMOP); |
| 15906 | if(ctx->A==0 && ctx->R==1) OK(ENC_LDSMINLH_32_MEMOP); |
| 15907 | } |
| 15908 | return rc; |
| 15909 | } |
| 15910 | |
| 15911 | /* ldtr.xml */ |
| 15912 | int LDTR(context *ctx, Instruction *instr) |
no test coverage detected