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

Function FCCMPE_float

arch/arm64/disassembler/decode2.c:4713–4749  ·  view source on GitHub ↗

fccmpe_float.xml */

Source from the content-addressed store, hash-verified

4711
4712/* fccmpe_float.xml */
4713int FCCMPE_float(context *ctx, Instruction *instr)
4714{
4715 int rc = DECODE_STATUS_UNMATCHED;
4716 /* class iclass_float */
4717 /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|cond=xxxx|01|Rn=xxxxx|op=1|nzcv=xxxx */
4718 if((INSWORD & 0xFF200C10)==0x1E200410) {
4719 decode_fields32(ENC_FCCMPE_H_FLOATCCMP, ctx, instr);
4720 ctx->n = UINT(ctx->Rn);
4721 ctx->m = UINT(ctx->Rm);
4722 if(!ctx->ftype) {
4723 ctx->datasize = 0x20;
4724 }
4725 else if(ctx->ftype==1) {
4726 ctx->datasize = 0x40;
4727 }
4728 else if(ctx->ftype==2) {
4729 UNDEFINED;
4730 }
4731 else if(ctx->ftype==3) {
4732 if(HaveFP16Ext()) {
4733 ctx->datasize = 0x10;
4734 }
4735 else {
4736 UNDEFINED;
4737 }
4738 }
4739 ctx->signal_all_nans = (ctx->op==1);
4740 ctx->condition = ctx->cond;
4741 ctx->flags = ctx->nzcv;
4742 if(ctx->ftype==3) OK(ENC_FCCMPE_H_FLOATCCMP);
4743 if(ctx->ftype==0) OK(ENC_FCCMPE_S_FLOATCCMP);
4744 if(ctx->ftype==1) OK(ENC_FCCMPE_D_FLOATCCMP);
4745 }
4746 /* relevant operational pcode */
4747 instr->setflags = FLAGEFFECT_SETS_FLOAT;
4748 return rc;
4749}
4750
4751/* fccmp_float.xml */
4752int FCCMP_float(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatccmpFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected