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

Function FMSUB_float

arch/arm64/disassembler/decode2.c:9594–9629  ·  view source on GitHub ↗

fmsub_float.xml */

Source from the content-addressed store, hash-verified

9592
9593/* fmsub_float.xml */
9594int FMSUB_float(context *ctx, Instruction *instr)
9595{
9596 int rc = DECODE_STATUS_UNMATCHED;
9597 /* class iclass_float */
9598 /* M=0|0|S=0|11111|ftype=xx|o1=0|Rm=xxxxx|o0=1|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */
9599 if((INSWORD & 0xFF208000)==0x1F008000) {
9600 decode_fields32(ENC_FMSUB_H_FLOATDP3, ctx, instr);
9601 ctx->d = UINT(ctx->Rd);
9602 ctx->a = UINT(ctx->Ra);
9603 ctx->n = UINT(ctx->Rn);
9604 ctx->m = UINT(ctx->Rm);
9605 if(!ctx->ftype) {
9606 ctx->esize = 0x20;
9607 }
9608 else if(ctx->ftype==1) {
9609 ctx->esize = 0x40;
9610 }
9611 else if(ctx->ftype==2) {
9612 UNDEFINED;
9613 }
9614 else if(ctx->ftype==3) {
9615 if(HaveFP16Ext()) {
9616 ctx->esize = 0x10;
9617 }
9618 else {
9619 UNDEFINED;
9620 }
9621 }
9622 ctx->opa_neg = (ctx->o1==1);
9623 ctx->op1_neg = (ctx->o0!=ctx->o1);
9624 if(ctx->ftype==3) OK(ENC_FMSUB_H_FLOATDP3);
9625 if(ctx->ftype==0) OK(ENC_FMSUB_S_FLOATDP3);
9626 if(ctx->ftype==1) OK(ENC_FMSUB_D_FLOATDP3);
9627 }
9628 return rc;
9629}
9630
9631/* fmulx_advsimd_elt.xml */
9632int FMULX_advsimd_elt(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp3Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected