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

Function mul_z_zzi

arch/arm64/disassembler/decode2.c:42445–42491  ·  view source on GitHub ↗

mul_z_zzi.xml */

Source from the content-addressed store, hash-verified

42443
42444/* mul_z_zzi.xml */
42445int mul_z_zzi(context *ctx, Instruction *instr)
42446{
42447 int rc = DECODE_STATUS_UNMATCHED;
42448 /* class iclass_of_halfwords */
42449 /* 01000100|0|i3h=x|1|i3l=xx|Zm=xxx|111110|Zn=xxxxx|Zd=xxxxx */
42450 if((INSWORD & 0xFFA0FC00)==0x4420F800) {
42451 decode_fields32(ENC_MUL_Z_ZZI_H, ctx, instr);
42452 if(!HaveSVE2() && !HaveSME()) {
42453 UNDEFINED;
42454 }
42455 ctx->esize = 0x10;
42456 ctx->index = UINT(((ctx->i3h<<2)|ctx->i3l));
42457 ctx->n = UINT(ctx->Zn);
42458 ctx->m = UINT(ctx->Zm);
42459 ctx->d = UINT(ctx->Zd);
42460 OK(ENC_MUL_Z_ZZI_H);
42461 }
42462 /* class iclass_of_words */
42463 /* 01000100|size=10|1|i2=xx|Zm=xxx|111110|Zn=xxxxx|Zd=xxxxx */
42464 if((INSWORD & 0xFFE0FC00)==0x44A0F800) {
42465 decode_fields32(ENC_MUL_Z_ZZI_S, ctx, instr);
42466 if(!HaveSVE2() && !HaveSME()) {
42467 UNDEFINED;
42468 }
42469 ctx->esize = 0x20;
42470 ctx->index = UINT(ctx->i2);
42471 ctx->n = UINT(ctx->Zn);
42472 ctx->m = UINT(ctx->Zm);
42473 ctx->d = UINT(ctx->Zd);
42474 OK(ENC_MUL_Z_ZZI_S);
42475 }
42476 /* class iclass_of_doublewords */
42477 /* 01000100|size=11|1|i1=x|Zm=xxxx|111110|Zn=xxxxx|Zd=xxxxx */
42478 if((INSWORD & 0xFFE0FC00)==0x44E0F800) {
42479 decode_fields32(ENC_MUL_Z_ZZI_D, ctx, instr);
42480 if(!HaveSVE2() && !HaveSME()) {
42481 UNDEFINED;
42482 }
42483 ctx->esize = 0x40;
42484 ctx->index = UINT(ctx->i1);
42485 ctx->n = UINT(ctx->Zn);
42486 ctx->m = UINT(ctx->Zm);
42487 ctx->d = UINT(ctx->Zd);
42488 OK(ENC_MUL_Z_ZZI_D);
42489 }
42490 return rc;
42491}
42492
42493/* nand_p_p_pp.xml */
42494int nand_p_p_pp(context *ctx, Instruction *instr)

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected