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

Function SQDMLAL_advsimd_elt

arch/arm64/disassembler/decode2.c:22159–22215  ·  view source on GitHub ↗

sqdmlal_advsimd_elt.xml */

Source from the content-addressed store, hash-verified

22157
22158/* sqdmlal_advsimd_elt.xml */
22159int SQDMLAL_advsimd_elt(context *ctx, Instruction *instr)
22160{
22161 int rc = DECODE_STATUS_UNMATCHED;
22162 /* class iclass_2reg_scalar */
22163 /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=0|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */
22164 if((INSWORD & 0xFF00F400)==0x5F003000) {
22165 decode_fields32(ENC_SQDMLAL_ASISDELEM_L, ctx, instr);
22166 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22167 if(ctx->size==1) {
22168 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22169 ctx->Rmhi = 0;
22170 }
22171 else if(ctx->size==2) {
22172 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22173 ctx->Rmhi = ctx->M;
22174 }
22175 else {
22176 UNDEFINED;
22177 }
22178 ctx->d = UINT(ctx->Rd);
22179 ctx->n = UINT(ctx->Rn);
22180 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22181 ctx->esize = (8) << (UINT(ctx->size));
22182 ctx->datasize = ctx->esize;
22183 ctx->elements = 1;
22184 ctx->part = 0;
22185 ctx->sub_op = (ctx->o2==1);
22186 OK(ENC_SQDMLAL_ASISDELEM_L);
22187 }
22188 /* class iclass_2reg_element */
22189 /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=0|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */
22190 if((INSWORD & 0xBF00F400)==0xF003000) {
22191 decode_fields32(ENC_SQDMLAL_ASIMDELEM_L, ctx, instr);
22192 ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40;
22193 if(ctx->size==1) {
22194 ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M));
22195 ctx->Rmhi = 0;
22196 }
22197 else if(ctx->size==2) {
22198 ctx->index = UINT(((ctx->H<<1)|ctx->L));
22199 ctx->Rmhi = ctx->M;
22200 }
22201 else {
22202 UNDEFINED;
22203 }
22204 ctx->d = UINT(ctx->Rd);
22205 ctx->n = UINT(ctx->Rn);
22206 ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm));
22207 ctx->esize = (8) << (UINT(ctx->size));
22208 ctx->datasize = 0x40;
22209 ctx->part = UINT(ctx->Q);
22210 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
22211 ctx->sub_op = (ctx->o2==1);
22212 OK(ENC_SQDMLAL_ASIMDELEM_L);
22213 }
22214 return rc;
22215}
22216

Callers 2

decode_iclass_asisdelemFunction · 0.85
decode_iclass_asimdelemFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected