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

Function URSRA_advsimd

arch/arm64/disassembler/decode2.c:29589–29632  ·  view source on GitHub ↗

ursra_advsimd.xml */

Source from the content-addressed store, hash-verified

29587
29588/* ursra_advsimd.xml */
29589int URSRA_advsimd(context *ctx, Instruction *instr)
29590{
29591 int rc = DECODE_STATUS_UNMATCHED;
29592 /* class iclass_sisd */
29593 /* 01|U=1|111110|immh!=0000|immb=xxx|opcode[4:3]=00|o1=1|o0=1|opcode[0]=0|1|Rn=xxxxx|Rd=xxxxx */
29594 if((INSWORD & 0xFF80FC00)==0x7F003400 && (INSWORD & 0x780000)!=0x0) {
29595 decode_fields32(ENC_URSRA_ASISDSHF_R, ctx, instr);
29596 ctx->d = UINT(ctx->Rd);
29597 ctx->n = UINT(ctx->Rn);
29598 if(SLICE(ctx->immh,3,3)!=1) {
29599 UNDEFINED;
29600 }
29601 ctx->esize = (8) << (3);
29602 ctx->datasize = ctx->esize;
29603 ctx->elements = 1;
29604 ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb));
29605 ctx->unsigned_ = (ctx->U==1);
29606 ctx->round = (ctx->o1==1);
29607 ctx->accumulate = (ctx->o0==1);
29608 OK(ENC_URSRA_ASISDSHF_R);
29609 }
29610 /* class iclass_simd */
29611 /* 0|Q=x|U=1|011110|immh!=0000|immb=xxx|opcode[4:3]=00|o1=1|o0=1|opcode[0]=0|1|Rn=xxxxx|Rd=xxxxx */
29612 if((INSWORD & 0xBF80FC00)==0x2F003400 && (INSWORD & 0x780000)!=0x0) {
29613 decode_fields32(ENC_URSRA_ASIMDSHF_R, ctx, instr);
29614 ctx->d = UINT(ctx->Rd);
29615 ctx->n = UINT(ctx->Rn);
29616 if(ctx->immh==0) {
29617 SEE /* asimdimm */;
29618 }
29619 if(((SLICE(ctx->immh,3,3)<<1)|ctx->Q)==2) {
29620 UNDEFINED;
29621 }
29622 ctx->esize = (8) << (HighestSetBit(ctx->immh));
29623 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
29624 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
29625 ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb));
29626 ctx->unsigned_ = (ctx->U==1);
29627 ctx->round = (ctx->o1==1);
29628 ctx->accumulate = (ctx->o0==1);
29629 OK(ENC_URSRA_ASIMDSHF_R);
29630 }
29631 return rc;
29632}
29633
29634/* usdot_advsimd_elt.xml */
29635int USDOT_advsimd_elt(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asisdshfFunction · 0.85
decode_iclass_asimdshfFunction · 0.85

Calls 2

decode_fields32Function · 0.85
HighestSetBitFunction · 0.85

Tested by

no test coverage detected