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

Function FNMSUB_float

arch/arm64/disassembler/decode2.c:10078–10113  ·  view source on GitHub ↗

fnmsub_float.xml */

Source from the content-addressed store, hash-verified

10076
10077/* fnmsub_float.xml */
10078int FNMSUB_float(context *ctx, Instruction *instr)
10079{
10080 int rc = DECODE_STATUS_UNMATCHED;
10081 /* class iclass_float */
10082 /* M=0|0|S=0|11111|ftype=xx|o1=1|Rm=xxxxx|o0=1|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */
10083 if((INSWORD & 0xFF208000)==0x1F208000) {
10084 decode_fields32(ENC_FNMSUB_H_FLOATDP3, ctx, instr);
10085 ctx->d = UINT(ctx->Rd);
10086 ctx->a = UINT(ctx->Ra);
10087 ctx->n = UINT(ctx->Rn);
10088 ctx->m = UINT(ctx->Rm);
10089 if(!ctx->ftype) {
10090 ctx->esize = 0x20;
10091 }
10092 else if(ctx->ftype==1) {
10093 ctx->esize = 0x40;
10094 }
10095 else if(ctx->ftype==2) {
10096 UNDEFINED;
10097 }
10098 else if(ctx->ftype==3) {
10099 if(HaveFP16Ext()) {
10100 ctx->esize = 0x10;
10101 }
10102 else {
10103 UNDEFINED;
10104 }
10105 }
10106 ctx->opa_neg = (ctx->o1==1);
10107 ctx->op1_neg = (ctx->o0!=ctx->o1);
10108 if(ctx->ftype==3) OK(ENC_FNMSUB_H_FLOATDP3);
10109 if(ctx->ftype==0) OK(ENC_FNMSUB_S_FLOATDP3);
10110 if(ctx->ftype==1) OK(ENC_FNMSUB_D_FLOATDP3);
10111 }
10112 return rc;
10113}
10114
10115/* fnmul_float.xml */
10116int FNMUL_float(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp3Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected