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

Function FMLS_advsimd_vec

arch/arm64/disassembler/decode2.c:9259–9295  ·  view source on GitHub ↗

fmls_advsimd_vec.xml */

Source from the content-addressed store, hash-verified

9257
9258/* fmls_advsimd_vec.xml */
9259int FMLS_advsimd_vec(context *ctx, Instruction *instr)
9260{
9261 int rc = DECODE_STATUS_UNMATCHED;
9262 /* class iclass_half */
9263 /* 0|Q=x|U=0|01110|a=1|10|Rm=xxxxx|00|opcode=001|1|Rn=xxxxx|Rd=xxxxx */
9264 if((INSWORD & 0xBFE0FC00)==0xEC00C00) {
9265 decode_fields32(ENC_FMLS_ASIMDSAMEFP16_ONLY, ctx, instr);
9266 if(!HaveFP16Ext()) {
9267 UNDEFINED;
9268 }
9269 ctx->d = UINT(ctx->Rd);
9270 ctx->n = UINT(ctx->Rn);
9271 ctx->m = UINT(ctx->Rm);
9272 ctx->esize = 0x10;
9273 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
9274 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
9275 ctx->sub_op = (ctx->a==1);
9276 OK(ENC_FMLS_ASIMDSAMEFP16_ONLY);
9277 }
9278 /* class iclass_single_and_double */
9279 /* 0|Q=x|U=0|01110|op=1|sz=x|1|Rm=xxxxx|opcode=11001|1|Rn=xxxxx|Rd=xxxxx */
9280 if((INSWORD & 0xBFA0FC00)==0xEA0CC00) {
9281 decode_fields32(ENC_FMLS_ASIMDSAME_ONLY, ctx, instr);
9282 ctx->d = UINT(ctx->Rd);
9283 ctx->n = UINT(ctx->Rn);
9284 ctx->m = UINT(ctx->Rm);
9285 if(((ctx->sz<<1)|ctx->Q)==2) {
9286 UNDEFINED;
9287 }
9288 ctx->esize = (0x20) << (UINT(ctx->sz));
9289 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
9290 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
9291 ctx->sub_op = (ctx->op==1);
9292 OK(ENC_FMLS_ASIMDSAME_ONLY);
9293 }
9294 return rc;
9295}
9296
9297/* fmov_advsimd.xml */
9298int FMOV_advsimd(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected