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

Function CMHS_advsimd

arch/arm64/disassembler/decode2.c:2579–2617  ·  view source on GitHub ↗

cmhs_advsimd.xml */

Source from the content-addressed store, hash-verified

2577
2578/* cmhs_advsimd.xml */
2579int CMHS_advsimd(context *ctx, Instruction *instr)
2580{
2581 int rc = DECODE_STATUS_UNMATCHED;
2582 /* class iclass_sisd */
2583 /* 01|U=1|11110|size=xx|1|Rm=xxxxx|opcode[4:1]=0011|eq=1|1|Rn=xxxxx|Rd=xxxxx */
2584 if((INSWORD & 0xFF20FC00)==0x7E203C00) {
2585 decode_fields32(ENC_CMHS_ASISDSAME_ONLY, ctx, instr);
2586 ctx->d = UINT(ctx->Rd);
2587 ctx->n = UINT(ctx->Rn);
2588 ctx->m = UINT(ctx->Rm);
2589 if(ctx->size!=3) {
2590 UNDEFINED;
2591 }
2592 ctx->esize = (8) << (UINT(ctx->size));
2593 ctx->datasize = ctx->esize;
2594 ctx->elements = 1;
2595 ctx->unsigned_ = (ctx->U==1);
2596 ctx->cmp_eq = (ctx->eq==1);
2597 OK(ENC_CMHS_ASISDSAME_ONLY);
2598 }
2599 /* class iclass_simd */
2600 /* 0|Q=x|U=1|01110|size=xx|1|Rm=xxxxx|opcode[4:1]=0011|eq=1|1|Rn=xxxxx|Rd=xxxxx */
2601 if((INSWORD & 0xBF20FC00)==0x2E203C00) {
2602 decode_fields32(ENC_CMHS_ASIMDSAME_ONLY, ctx, instr);
2603 ctx->d = UINT(ctx->Rd);
2604 ctx->n = UINT(ctx->Rn);
2605 ctx->m = UINT(ctx->Rm);
2606 if(((ctx->size<<1)|ctx->Q)==6) {
2607 UNDEFINED;
2608 }
2609 ctx->esize = (8) << (UINT(ctx->size));
2610 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
2611 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
2612 ctx->unsigned_ = (ctx->U==1);
2613 ctx->cmp_eq = (ctx->eq==1);
2614 OK(ENC_CMHS_ASIMDSAME_ONLY);
2615 }
2616 return rc;
2617}
2618
2619/* cmle_advsimd.xml */
2620int CMLE_advsimd(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asisdsameFunction · 0.85
decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected