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

Function UQSUB_advsimd

arch/arm64/disassembler/decode2.c:29360–29393  ·  view source on GitHub ↗

uqsub_advsimd.xml */

Source from the content-addressed store, hash-verified

29358
29359/* uqsub_advsimd.xml */
29360int UQSUB_advsimd(context *ctx, Instruction *instr)
29361{
29362 int rc = DECODE_STATUS_UNMATCHED;
29363 /* class iclass_sisd */
29364 /* 01|U=1|11110|size=xx|1|Rm=xxxxx|opcode=00101|1|Rn=xxxxx|Rd=xxxxx */
29365 if((INSWORD & 0xFF20FC00)==0x7E202C00) {
29366 decode_fields32(ENC_UQSUB_ASISDSAME_ONLY, ctx, instr);
29367 ctx->d = UINT(ctx->Rd);
29368 ctx->n = UINT(ctx->Rn);
29369 ctx->m = UINT(ctx->Rm);
29370 ctx->esize = (8) << (UINT(ctx->size));
29371 ctx->datasize = ctx->esize;
29372 ctx->elements = 1;
29373 ctx->unsigned_ = (ctx->U==1);
29374 OK(ENC_UQSUB_ASISDSAME_ONLY);
29375 }
29376 /* class iclass_simd */
29377 /* 0|Q=x|U=1|01110|size=xx|1|Rm=xxxxx|opcode=00101|1|Rn=xxxxx|Rd=xxxxx */
29378 if((INSWORD & 0xBF20FC00)==0x2E202C00) {
29379 decode_fields32(ENC_UQSUB_ASIMDSAME_ONLY, ctx, instr);
29380 ctx->d = UINT(ctx->Rd);
29381 ctx->n = UINT(ctx->Rn);
29382 ctx->m = UINT(ctx->Rm);
29383 if(((ctx->size<<1)|ctx->Q)==6) {
29384 UNDEFINED;
29385 }
29386 ctx->esize = (8) << (UINT(ctx->size));
29387 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
29388 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
29389 ctx->unsigned_ = (ctx->U==1);
29390 OK(ENC_UQSUB_ASIMDSAME_ONLY);
29391 }
29392 return rc;
29393}
29394
29395/* uqxtn_advsimd.xml */
29396int UQXTN_advsimd(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asisdsameFunction · 0.85
decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected