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

Function CRC32C

arch/arm64/disassembler/decode2.c:2982–3009  ·  view source on GitHub ↗

crc32c.xml */

Source from the content-addressed store, hash-verified

2980
2981/* crc32c.xml */
2982int CRC32C(context *ctx, Instruction *instr)
2983{
2984 int rc = DECODE_STATUS_UNMATCHED;
2985 /* class iclass_crc */
2986 /* sf=x|op=0|S=0|11010110|Rm=xxxxx|opcode2[5:3]=010|C=1|sz=xx|Rn=xxxxx|Rd=xxxxx */
2987 if((INSWORD & 0x7FE0F000)==0x1AC05000) {
2988 decode_fields32(ENC_CRC32CB_32C_DP_2SRC, ctx, instr);
2989 if(!HaveCRCExt()) {
2990 UNDEFINED;
2991 }
2992 ctx->d = UINT(ctx->Rd);
2993 ctx->n = UINT(ctx->Rn);
2994 ctx->m = UINT(ctx->Rm);
2995 if(ctx->sf==1 && ctx->sz!=3) {
2996 UNDEFINED;
2997 }
2998 if(ctx->sf==0 && ctx->sz==3) {
2999 UNDEFINED;
3000 }
3001 ctx->size = (8) << (UINT(ctx->sz));
3002 ctx->crc32c = (ctx->C==1);
3003 if(ctx->sf==0 && ctx->sz==0) OK(ENC_CRC32CB_32C_DP_2SRC);
3004 if(ctx->sf==0 && ctx->sz==1) OK(ENC_CRC32CH_32C_DP_2SRC);
3005 if(ctx->sf==0 && ctx->sz==2) OK(ENC_CRC32CW_32C_DP_2SRC);
3006 if(ctx->sf==1 && ctx->sz==3) OK(ENC_CRC32CX_64C_DP_2SRC);
3007 }
3008 return rc;
3009}
3010
3011/* csdb.xml */
3012int CSDB(context *ctx, Instruction *instr)

Callers 1

decode_iclass_dp_2srcFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected