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

Function UQSHRN_advsimd

arch/arm64/disassembler/decode2.c:29311–29357  ·  view source on GitHub ↗

uqshrn_advsimd.xml */

Source from the content-addressed store, hash-verified

29309
29310/* uqshrn_advsimd.xml */
29311int UQSHRN_advsimd(context *ctx, Instruction *instr)
29312{
29313 int rc = DECODE_STATUS_UNMATCHED;
29314 /* class iclass_sisd */
29315 /* 01|U=1|111110|immh!=0000|immb=xxx|opcode[4:1]=1001|op=0|1|Rn=xxxxx|Rd=xxxxx */
29316 if((INSWORD & 0xFF80FC00)==0x7F009400 && (INSWORD & 0x780000)!=0x0) {
29317 decode_fields32(ENC_UQSHRN_ASISDSHF_N, ctx, instr);
29318 ctx->d = UINT(ctx->Rd);
29319 ctx->n = UINT(ctx->Rn);
29320 if(ctx->immh==0) {
29321 UNDEFINED;
29322 }
29323 if(SLICE(ctx->immh,3,3)==1) {
29324 UNDEFINED;
29325 }
29326 ctx->esize = (8) << (HighestSetBit(ctx->immh));
29327 ctx->datasize = ctx->esize;
29328 ctx->elements = 1;
29329 ctx->part = 0;
29330 ctx->shift = ((2) * (ctx->esize))-UINT(((ctx->immh<<3)|ctx->immb));
29331 ctx->round = (ctx->op==1);
29332 ctx->unsigned_ = (ctx->U==1);
29333 OK(ENC_UQSHRN_ASISDSHF_N);
29334 }
29335 /* class iclass_simd */
29336 /* 0|Q=x|U=1|011110|immh!=0000|immb=xxx|opcode[4:1]=1001|op=0|1|Rn=xxxxx|Rd=xxxxx */
29337 if((INSWORD & 0xBF80FC00)==0x2F009400 && (INSWORD & 0x780000)!=0x0) {
29338 decode_fields32(ENC_UQSHRN_ASIMDSHF_N, ctx, instr);
29339 ctx->d = UINT(ctx->Rd);
29340 ctx->n = UINT(ctx->Rn);
29341 if(ctx->immh==0) {
29342 SEE /* asimdimm */;
29343 }
29344 if(SLICE(ctx->immh,3,3)==1) {
29345 UNDEFINED;
29346 }
29347 ctx->esize = (8) << (HighestSetBit(ctx->immh));
29348 ctx->datasize = 0x40;
29349 ctx->part = UINT(ctx->Q);
29350 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
29351 ctx->shift = ((2) * (ctx->esize))-UINT(((ctx->immh<<3)|ctx->immb));
29352 ctx->round = (ctx->op==1);
29353 ctx->unsigned_ = (ctx->U==1);
29354 OK(ENC_UQSHRN_ASIMDSHF_N);
29355 }
29356 return rc;
29357}
29358
29359/* uqsub_advsimd.xml */
29360int UQSUB_advsimd(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