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

Function CMLT_advsimd

arch/arm64/disassembler/decode2.c:2679–2713  ·  view source on GitHub ↗

cmlt_advsimd.xml */

Source from the content-addressed store, hash-verified

2677
2678/* cmlt_advsimd.xml */
2679int CMLT_advsimd(context *ctx, Instruction *instr)
2680{
2681 int rc = DECODE_STATUS_UNMATCHED;
2682 /* class iclass_sisd */
2683 /* 01|U=0|11110|size=xx|10000|opcode=01010|10|Rn=xxxxx|Rd=xxxxx */
2684 if((INSWORD & 0xFF3FFC00)==0x5E20A800) {
2685 decode_fields32(ENC_CMLT_ASISDMISC_Z, ctx, instr);
2686 ctx->d = UINT(ctx->Rd);
2687 ctx->n = UINT(ctx->Rn);
2688 if(ctx->size!=3) {
2689 UNDEFINED;
2690 }
2691 ctx->esize = (8) << (UINT(ctx->size));
2692 ctx->datasize = ctx->esize;
2693 ctx->elements = 1;
2694 ctx->comparison = CompareOp_LT;
2695 OK(ENC_CMLT_ASISDMISC_Z);
2696 }
2697 /* class iclass_simd */
2698 /* 0|Q=x|U=0|01110|size=xx|10000|opcode=01010|10|Rn=xxxxx|Rd=xxxxx */
2699 if((INSWORD & 0xBF3FFC00)==0xE20A800) {
2700 decode_fields32(ENC_CMLT_ASIMDMISC_Z, ctx, instr);
2701 ctx->d = UINT(ctx->Rd);
2702 ctx->n = UINT(ctx->Rn);
2703 if(((ctx->size<<1)|ctx->Q)==6) {
2704 UNDEFINED;
2705 }
2706 ctx->esize = (8) << (UINT(ctx->size));
2707 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
2708 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
2709 ctx->comparison = CompareOp_LT;
2710 OK(ENC_CMLT_ASIMDMISC_Z);
2711 }
2712 return rc;
2713}
2714
2715/* cmn_adds_addsub_ext.xml */
2716int CMN_ADDS_addsub_ext(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asisdmiscFunction · 0.85
decode_iclass_asimdmiscFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected