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

Function FMADD_float

arch/arm64/disassembler/decode2.c:7990–8025  ·  view source on GitHub ↗

fmadd_float.xml */

Source from the content-addressed store, hash-verified

7988
7989/* fmadd_float.xml */
7990int FMADD_float(context *ctx, Instruction *instr)
7991{
7992 int rc = DECODE_STATUS_UNMATCHED;
7993 /* class iclass_float */
7994 /* M=0|0|S=0|11111|ftype=xx|o1=0|Rm=xxxxx|o0=0|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */
7995 if((INSWORD & 0xFF208000)==0x1F000000) {
7996 decode_fields32(ENC_FMADD_H_FLOATDP3, ctx, instr);
7997 ctx->d = UINT(ctx->Rd);
7998 ctx->a = UINT(ctx->Ra);
7999 ctx->n = UINT(ctx->Rn);
8000 ctx->m = UINT(ctx->Rm);
8001 if(!ctx->ftype) {
8002 ctx->esize = 0x20;
8003 }
8004 else if(ctx->ftype==1) {
8005 ctx->esize = 0x40;
8006 }
8007 else if(ctx->ftype==2) {
8008 UNDEFINED;
8009 }
8010 else if(ctx->ftype==3) {
8011 if(HaveFP16Ext()) {
8012 ctx->esize = 0x10;
8013 }
8014 else {
8015 UNDEFINED;
8016 }
8017 }
8018 ctx->opa_neg = (ctx->o1==1);
8019 ctx->op1_neg = (ctx->o0!=ctx->o1);
8020 if(ctx->ftype==3) OK(ENC_FMADD_H_FLOATDP3);
8021 if(ctx->ftype==0) OK(ENC_FMADD_S_FLOATDP3);
8022 if(ctx->ftype==1) OK(ENC_FMADD_D_FLOATDP3);
8023 }
8024 return rc;
8025}
8026
8027/* fmaxnmp_advsimd_pair.xml */
8028int FMAXNMP_advsimd_pair(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp3Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected