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

Function SQDMLSL_advsimd_elt

arch/arm64/disassembler/decode2.c:22259–22315  ·  view source on GitHub ↗

sqdmlsl_advsimd_elt.xml */

Source from the content-addressed store, hash-verified

22257
22258/* sqdmlsl_advsimd_elt.xml */
22259int SQDMLSL_advsimd_elt(context *ctx, Instruction *instr)
22260{
22261 int rc = DECODE_STATUS_UNMATCHED;
22262 /* class iclass_2reg_scalar */
22263 /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=1|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */
22264 if((INSWORD & 0xFF00F400)==0x5F007000) {
22265 decode_fields32(ENC_SQDMLSL_ASISDELEM_L, ctx, instr);
22266 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22267 if(ctx->size==1) {
22268 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22269 ctx->Rmhi = 0;
22270 }
22271 else if(ctx->size==2) {
22272 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22273 ctx->Rmhi = ctx->M;
22274 }
22275 else {
22276 UNDEFINED;
22277 }
22278 ctx->d = UINT(ctx->Rd);
22279 ctx->n = UINT(ctx->Rn);
22280 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22281 ctx->esize = (8) << (UINT(ctx->size));
22282 ctx->datasize = ctx->esize;
22283 ctx->elements = 1;
22284 ctx->part = 0;
22285 ctx->sub_op = (ctx->o2==1);
22286 OK(ENC_SQDMLSL_ASISDELEM_L);
22287 }
22288 /* class iclass_2reg_element */
22289 /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=1|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */
22290 if((INSWORD & 0xBF00F400)==0xF007000) {
22291 decode_fields32(ENC_SQDMLSL_ASIMDELEM_L, ctx, instr);
22292 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22293 if(ctx->size==1) {
22294 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22295 ctx->Rmhi = 0;
22296 }
22297 else if(ctx->size==2) {
22298 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22299 ctx->Rmhi = ctx->M;
22300 }
22301 else {
22302 UNDEFINED;
22303 }
22304 ctx->d = UINT(ctx->Rd);
22305 ctx->n = UINT(ctx->Rn);
22306 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22307 ctx->esize = (8) << (UINT(ctx->size));
22308 ctx->datasize = 0x40;
22309 ctx->part = UINT(ctx->Q);
22310 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
22311 ctx->sub_op = (ctx->o2==1);
22312 OK(ENC_SQDMLSL_ASIMDELEM_L);
22313 }
22314 return rc;
22315}
22316

Callers 2

decode_iclass_asisdelemFunction · 0.85
decode_iclass_asimdelemFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected