MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / LDSMINH

Function LDSMINH

arch/arm64/disassembler/decode2.c:15859–15909  ·  view source on GitHub ↗

ldsminh.xml */

Source from the content-addressed store, hash-verified

15857
15858/* ldsminh.xml */
15859int 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 */
15912int LDTR(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 2

decode_fields32Function · 0.85
STSMINH_LDSMINHFunction · 0.85

Tested by

no test coverage detected