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

Function LDSMAXB

arch/arm64/disassembler/decode2.c:15643–15693  ·  view source on GitHub ↗

ldsmaxb.xml */

Source from the content-addressed store, hash-verified

15641
15642/* ldsmaxb.xml */
15643int LDSMAXB(context *ctx, Instruction *instr)
15644{
15645 int rc = DECODE_STATUS_UNMATCHED;
15646 /* class iclass_general */
15647 /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=100|00|Rn=xxxxx|Rt=xxxxx */
15648 if((INSWORD & 0xFF20FC00)==0x38204000) {
15649 decode_fields32(ENC_LDSMAXAB_32_MEMOP, ctx, instr);
15650 if(!HaveAtomicExt()) {
15651 UNDEFINED;
15652 }
15653 ctx->t = UINT(ctx->Rt);
15654 ctx->n = UINT(ctx->Rn);
15655 ctx->s = UINT(ctx->Rs);
15656 ctx->datasize = (8) << (UINT(ctx->size));
15657 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
15658 ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
15659 ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
15660 if(!ctx->opc) {
15661 ctx->op = MemAtomicOp_ADD;
15662 }
15663 else if(ctx->opc==1) {
15664 ctx->op = MemAtomicOp_BIC;
15665 }
15666 else if(ctx->opc==2) {
15667 ctx->op = MemAtomicOp_EOR;
15668 }
15669 else if(ctx->opc==3) {
15670 ctx->op = MemAtomicOp_ORR;
15671 }
15672 else if(ctx->opc==4) {
15673 ctx->op = MemAtomicOp_SMAX;
15674 }
15675 else if(ctx->opc==5) {
15676 ctx->op = MemAtomicOp_SMIN;
15677 }
15678 else if(ctx->opc==6) {
15679 ctx->op = MemAtomicOp_UMAX;
15680 }
15681 else if(ctx->opc==7) {
15682 ctx->op = MemAtomicOp_UMIN;
15683 }
15684 ctx->tag_checked = ctx->n!=0x1f;
15685 /* regular aliases */
15686 if(ctx->A==0 && ctx->Rt==0x1f) return STSMAXB_LDSMAXB(ctx, instr);
15687 if(ctx->A==1 && ctx->R==0) OK(ENC_LDSMAXAB_32_MEMOP);
15688 if(ctx->A==1 && ctx->R==1) OK(ENC_LDSMAXALB_32_MEMOP);
15689 if(ctx->A==0 && ctx->R==0) OK(ENC_LDSMAXB_32_MEMOP);
15690 if(ctx->A==0 && ctx->R==1) OK(ENC_LDSMAXLB_32_MEMOP);
15691 }
15692 return rc;
15693}
15694
15695/* ldsmaxh.xml */
15696int LDSMAXH(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 2

decode_fields32Function · 0.85
STSMAXB_LDSMAXBFunction · 0.85

Tested by

no test coverage detected