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

Function SQDMULL_advsimd_elt

arch/arm64/disassembler/decode2.c:22455–22509  ·  view source on GitHub ↗

sqdmull_advsimd_elt.xml */

Source from the content-addressed store, hash-verified

22453
22454/* sqdmull_advsimd_elt.xml */
22455int SQDMULL_advsimd_elt(context *ctx, Instruction *instr)
22456{
22457 int rc = DECODE_STATUS_UNMATCHED;
22458 /* class iclass_2reg_scalar */
22459 /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode=1011|H=x|0|Rn=xxxxx|Rd=xxxxx */
22460 if((INSWORD & 0xFF00F400)==0x5F00B000) {
22461 decode_fields32(ENC_SQDMULL_ASISDELEM_L, ctx, instr);
22462 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22463 if(ctx->size==1) {
22464 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22465 ctx->Rmhi = 0;
22466 }
22467 else if(ctx->size==2) {
22468 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22469 ctx->Rmhi = ctx->M;
22470 }
22471 else {
22472 UNDEFINED;
22473 }
22474 ctx->d = UINT(ctx->Rd);
22475 ctx->n = UINT(ctx->Rn);
22476 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22477 ctx->esize = (8) << (UINT(ctx->size));
22478 ctx->datasize = ctx->esize;
22479 ctx->elements = 1;
22480 ctx->part = 0;
22481 OK(ENC_SQDMULL_ASISDELEM_L);
22482 }
22483 /* class iclass_2reg_element */
22484 /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode=1011|H=x|0|Rn=xxxxx|Rd=xxxxx */
22485 if((INSWORD & 0xBF00F400)==0xF00B000) {
22486 decode_fields32(ENC_SQDMULL_ASIMDELEM_L, ctx, instr);
22487 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22488 if(ctx->size==1) {
22489 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22490 ctx->Rmhi = 0;
22491 }
22492 else if(ctx->size==2) {
22493 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22494 ctx->Rmhi = ctx->M;
22495 }
22496 else {
22497 UNDEFINED;
22498 }
22499 ctx->d = UINT(ctx->Rd);
22500 ctx->n = UINT(ctx->Rn);
22501 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22502 ctx->esize = (8) << (UINT(ctx->size));
22503 ctx->datasize = 0x40;
22504 ctx->part = UINT(ctx->Q);
22505 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
22506 OK(ENC_SQDMULL_ASIMDELEM_L);
22507 }
22508 return rc;
22509}
22510
22511/* sqdmull_advsimd_vec.xml */
22512int SQDMULL_advsimd_vec(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asisdelemFunction · 0.85
decode_iclass_asimdelemFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected