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

Function SQSHRN_advsimd

arch/arm64/disassembler/decode2.c:23227–23273  ·  view source on GitHub ↗

sqshrn_advsimd.xml */

Source from the content-addressed store, hash-verified

23225
23226/* sqshrn_advsimd.xml */
23227int SQSHRN_advsimd(context *ctx, Instruction *instr)
23228{
23229 int rc = DECODE_STATUS_UNMATCHED;
23230 /* class iclass_sisd */
23231 /* 01|U=0|111110|immh!=0000|immb=xxx|opcode[4:1]=1001|op=0|1|Rn=xxxxx|Rd=xxxxx */
23232 if((INSWORD & 0xFF80FC00)==0x5F009400 && (INSWORD & 0x780000)!=0x0) {
23233 decode_fields32(ENC_SQSHRN_ASISDSHF_N, ctx, instr);
23234 ctx->d = UINT(ctx->Rd);
23235 ctx->n = UINT(ctx->Rn);
23236 if(ctx->immh==0) {
23237 UNDEFINED;
23238 }
23239 if(SLICE(ctx->immh,3,3)==1) {
23240 UNDEFINED;
23241 }
23242 ctx->esize = (8) << (HighestSetBit(ctx->immh));
23243 ctx->datasize = ctx->esize;
23244 ctx->elements = 1;
23245 ctx->part = 0;
23246 ctx->shift = ((2) * (ctx->esize))-UINT(((ctx->immh<<3)|ctx->immb));
23247 ctx->round = (ctx->op==1);
23248 ctx->unsigned_ = (ctx->U==1);
23249 OK(ENC_SQSHRN_ASISDSHF_N);
23250 }
23251 /* class iclass_simd */
23252 /* 0|Q=x|U=0|011110|immh!=0000|immb=xxx|opcode[4:1]=1001|op=0|1|Rn=xxxxx|Rd=xxxxx */
23253 if((INSWORD & 0xBF80FC00)==0xF009400 && (INSWORD & 0x780000)!=0x0) {
23254 decode_fields32(ENC_SQSHRN_ASIMDSHF_N, ctx, instr);
23255 ctx->d = UINT(ctx->Rd);
23256 ctx->n = UINT(ctx->Rn);
23257 if(ctx->immh==0) {
23258 SEE /* asimdimm */;
23259 }
23260 if(SLICE(ctx->immh,3,3)==1) {
23261 UNDEFINED;
23262 }
23263 ctx->esize = (8) << (HighestSetBit(ctx->immh));
23264 ctx->datasize = 0x40;
23265 ctx->part = UINT(ctx->Q);
23266 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
23267 ctx->shift = ((2) * (ctx->esize))-UINT(((ctx->immh<<3)|ctx->immb));
23268 ctx->round = (ctx->op==1);
23269 ctx->unsigned_ = (ctx->U==1);
23270 OK(ENC_SQSHRN_ASIMDSHF_N);
23271 }
23272 return rc;
23273}
23274
23275/* sqshrun_advsimd.xml */
23276int SQSHRUN_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