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

Function LDUMINB

arch/arm64/disassembler/decode2.c:16537–16587  ·  view source on GitHub ↗

lduminb.xml */

Source from the content-addressed store, hash-verified

16535
16536/* lduminb.xml */
16537int LDUMINB(context *ctx, Instruction *instr)
16538{
16539 int rc = DECODE_STATUS_UNMATCHED;
16540 /* class iclass_general */
16541 /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=111|00|Rn=xxxxx|Rt=xxxxx */
16542 if((INSWORD & 0xFF20FC00)==0x38207000) {
16543 decode_fields32(ENC_LDUMINAB_32_MEMOP, ctx, instr);
16544 if(!HaveAtomicExt()) {
16545 UNDEFINED;
16546 }
16547 ctx->t = UINT(ctx->Rt);
16548 ctx->n = UINT(ctx->Rn);
16549 ctx->s = UINT(ctx->Rs);
16550 ctx->datasize = (8) << (UINT(ctx->size));
16551 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
16552 ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
16553 ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
16554 if(!ctx->opc) {
16555 ctx->op = MemAtomicOp_ADD;
16556 }
16557 else if(ctx->opc==1) {
16558 ctx->op = MemAtomicOp_BIC;
16559 }
16560 else if(ctx->opc==2) {
16561 ctx->op = MemAtomicOp_EOR;
16562 }
16563 else if(ctx->opc==3) {
16564 ctx->op = MemAtomicOp_ORR;
16565 }
16566 else if(ctx->opc==4) {
16567 ctx->op = MemAtomicOp_SMAX;
16568 }
16569 else if(ctx->opc==5) {
16570 ctx->op = MemAtomicOp_SMIN;
16571 }
16572 else if(ctx->opc==6) {
16573 ctx->op = MemAtomicOp_UMAX;
16574 }
16575 else if(ctx->opc==7) {
16576 ctx->op = MemAtomicOp_UMIN;
16577 }
16578 ctx->tag_checked = ctx->n!=0x1f;
16579 /* regular aliases */
16580 if(ctx->A==0 && ctx->Rt==0x1f) return STUMINB_LDUMINB(ctx, instr);
16581 if(ctx->A==1 && ctx->R==0) OK(ENC_LDUMINAB_32_MEMOP);
16582 if(ctx->A==1 && ctx->R==1) OK(ENC_LDUMINALB_32_MEMOP);
16583 if(ctx->A==0 && ctx->R==0) OK(ENC_LDUMINB_32_MEMOP);
16584 if(ctx->A==0 && ctx->R==1) OK(ENC_LDUMINLB_32_MEMOP);
16585 }
16586 return rc;
16587}
16588
16589/* lduminh.xml */
16590int LDUMINH(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 2

decode_fields32Function · 0.85
STUMINB_LDUMINBFunction · 0.85

Tested by

no test coverage detected