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

Function FNMADD_float

arch/arm64/disassembler/decode2.c:10040–10075  ·  view source on GitHub ↗

fnmadd_float.xml */

Source from the content-addressed store, hash-verified

10038
10039/* fnmadd_float.xml */
10040int FNMADD_float(context *ctx, Instruction *instr)
10041{
10042 int rc = DECODE_STATUS_UNMATCHED;
10043 /* class iclass_float */
10044 /* M=0|0|S=0|11111|ftype=xx|o1=1|Rm=xxxxx|o0=0|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */
10045 if((INSWORD & 0xFF208000)==0x1F200000) {
10046 decode_fields32(ENC_FNMADD_H_FLOATDP3, ctx, instr);
10047 ctx->d = UINT(ctx->Rd);
10048 ctx->a = UINT(ctx->Ra);
10049 ctx->n = UINT(ctx->Rn);
10050 ctx->m = UINT(ctx->Rm);
10051 if(!ctx->ftype) {
10052 ctx->esize = 0x20;
10053 }
10054 else if(ctx->ftype==1) {
10055 ctx->esize = 0x40;
10056 }
10057 else if(ctx->ftype==2) {
10058 UNDEFINED;
10059 }
10060 else if(ctx->ftype==3) {
10061 if(HaveFP16Ext()) {
10062 ctx->esize = 0x10;
10063 }
10064 else {
10065 UNDEFINED;
10066 }
10067 }
10068 ctx->opa_neg = (ctx->o1==1);
10069 ctx->op1_neg = (ctx->o0!=ctx->o1);
10070 if(ctx->ftype==3) OK(ENC_FNMADD_H_FLOATDP3);
10071 if(ctx->ftype==0) OK(ENC_FNMADD_S_FLOATDP3);
10072 if(ctx->ftype==1) OK(ENC_FNMADD_D_FLOATDP3);
10073 }
10074 return rc;
10075}
10076
10077/* fnmsub_float.xml */
10078int FNMSUB_float(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp3Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected