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

Function FCCMP_float

arch/arm64/disassembler/decode2.c:4752–4788  ·  view source on GitHub ↗

fccmp_float.xml */

Source from the content-addressed store, hash-verified

4750
4751/* fccmp_float.xml */
4752int FCCMP_float(context *ctx, Instruction *instr)
4753{
4754 int rc = DECODE_STATUS_UNMATCHED;
4755 /* class iclass_float */
4756 /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|cond=xxxx|01|Rn=xxxxx|op=0|nzcv=xxxx */
4757 if((INSWORD & 0xFF200C10)==0x1E200400) {
4758 decode_fields32(ENC_FCCMP_H_FLOATCCMP, ctx, instr);
4759 ctx->n = UINT(ctx->Rn);
4760 ctx->m = UINT(ctx->Rm);
4761 if(!ctx->ftype) {
4762 ctx->datasize = 0x20;
4763 }
4764 else if(ctx->ftype==1) {
4765 ctx->datasize = 0x40;
4766 }
4767 else if(ctx->ftype==2) {
4768 UNDEFINED;
4769 }
4770 else if(ctx->ftype==3) {
4771 if(HaveFP16Ext()) {
4772 ctx->datasize = 0x10;
4773 }
4774 else {
4775 UNDEFINED;
4776 }
4777 }
4778 ctx->signal_all_nans = (ctx->op==1);
4779 ctx->condition = ctx->cond;
4780 ctx->flags = ctx->nzcv;
4781 if(ctx->ftype==3) OK(ENC_FCCMP_H_FLOATCCMP);
4782 if(ctx->ftype==0) OK(ENC_FCCMP_S_FLOATCCMP);
4783 if(ctx->ftype==1) OK(ENC_FCCMP_D_FLOATCCMP);
4784 }
4785 /* relevant operational pcode */
4786 instr->setflags = FLAGEFFECT_SETS_FLOAT;
4787 return rc;
4788}
4789
4790/* fcmeq_advsimd_reg.xml */
4791int FCMEQ_advsimd_reg(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatccmpFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected