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

Function CMTST_advsimd

arch/arm64/disassembler/decode2.c:2865–2901  ·  view source on GitHub ↗

cmtst_advsimd.xml */

Source from the content-addressed store, hash-verified

2863
2864/* cmtst_advsimd.xml */
2865int CMTST_advsimd(context *ctx, Instruction *instr)
2866{
2867 int rc = DECODE_STATUS_UNMATCHED;
2868 /* class iclass_sisd */
2869 /* 01|U=0|11110|size=xx|1|Rm=xxxxx|opcode=10001|1|Rn=xxxxx|Rd=xxxxx */
2870 if((INSWORD & 0xFF20FC00)==0x5E208C00) {
2871 decode_fields32(ENC_CMTST_ASISDSAME_ONLY, ctx, instr);
2872 ctx->d = UINT(ctx->Rd);
2873 ctx->n = UINT(ctx->Rn);
2874 ctx->m = UINT(ctx->Rm);
2875 if(ctx->size!=3) {
2876 UNDEFINED;
2877 }
2878 ctx->esize = (8) << (UINT(ctx->size));
2879 ctx->datasize = ctx->esize;
2880 ctx->elements = 1;
2881 ctx->and_test = (ctx->U==0);
2882 OK(ENC_CMTST_ASISDSAME_ONLY);
2883 }
2884 /* class iclass_simd */
2885 /* 0|Q=x|U=0|01110|size=xx|1|Rm=xxxxx|opcode=10001|1|Rn=xxxxx|Rd=xxxxx */
2886 if((INSWORD & 0xBF20FC00)==0xE208C00) {
2887 decode_fields32(ENC_CMTST_ASIMDSAME_ONLY, ctx, instr);
2888 ctx->d = UINT(ctx->Rd);
2889 ctx->n = UINT(ctx->Rn);
2890 ctx->m = UINT(ctx->Rm);
2891 if(((ctx->size<<1)|ctx->Q)==6) {
2892 UNDEFINED;
2893 }
2894 ctx->esize = (8) << (UINT(ctx->size));
2895 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
2896 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
2897 ctx->and_test = (ctx->U==0);
2898 OK(ENC_CMTST_ASIMDSAME_ONLY);
2899 }
2900 return rc;
2901}
2902
2903/* cneg_csneg.xml */
2904int CNEG_CSNEG(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