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

Function LDUMAXB

arch/arm64/disassembler/decode2.c:16374–16424  ·  view source on GitHub ↗

ldumaxb.xml */

Source from the content-addressed store, hash-verified

16372
16373/* ldumaxb.xml */
16374int LDUMAXB(context *ctx, Instruction *instr)
16375{
16376 int rc = DECODE_STATUS_UNMATCHED;
16377 /* class iclass_general */
16378 /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=110|00|Rn=xxxxx|Rt=xxxxx */
16379 if((INSWORD & 0xFF20FC00)==0x38206000) {
16380 decode_fields32(ENC_LDUMAXAB_32_MEMOP, ctx, instr);
16381 if(!HaveAtomicExt()) {
16382 UNDEFINED;
16383 }
16384 ctx->t = UINT(ctx->Rt);
16385 ctx->n = UINT(ctx->Rn);
16386 ctx->s = UINT(ctx->Rs);
16387 ctx->datasize = (8) << (UINT(ctx->size));
16388 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
16389 ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
16390 ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
16391 if(!ctx->opc) {
16392 ctx->op = MemAtomicOp_ADD;
16393 }
16394 else if(ctx->opc==1) {
16395 ctx->op = MemAtomicOp_BIC;
16396 }
16397 else if(ctx->opc==2) {
16398 ctx->op = MemAtomicOp_EOR;
16399 }
16400 else if(ctx->opc==3) {
16401 ctx->op = MemAtomicOp_ORR;
16402 }
16403 else if(ctx->opc==4) {
16404 ctx->op = MemAtomicOp_SMAX;
16405 }
16406 else if(ctx->opc==5) {
16407 ctx->op = MemAtomicOp_SMIN;
16408 }
16409 else if(ctx->opc==6) {
16410 ctx->op = MemAtomicOp_UMAX;
16411 }
16412 else if(ctx->opc==7) {
16413 ctx->op = MemAtomicOp_UMIN;
16414 }
16415 ctx->tag_checked = ctx->n!=0x1f;
16416 /* regular aliases */
16417 if(ctx->A==0 && ctx->Rt==0x1f) return STUMAXB_LDUMAXB(ctx, instr);
16418 if(ctx->A==1 && ctx->R==0) OK(ENC_LDUMAXAB_32_MEMOP);
16419 if(ctx->A==1 && ctx->R==1) OK(ENC_LDUMAXALB_32_MEMOP);
16420 if(ctx->A==0 && ctx->R==0) OK(ENC_LDUMAXB_32_MEMOP);
16421 if(ctx->A==0 && ctx->R==1) OK(ENC_LDUMAXLB_32_MEMOP);
16422 }
16423 return rc;
16424}
16425
16426/* ldumaxh.xml */
16427int LDUMAXH(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 2

decode_fields32Function · 0.85
STUMAXB_LDUMAXBFunction · 0.85

Tested by

no test coverage detected