crc32c.xml */
| 2980 | |
| 2981 | /* crc32c.xml */ |
| 2982 | int 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 */ |
| 3012 | int CSDB(context *ctx, Instruction *instr) |
no test coverage detected