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

Function FMAXNM_advsimd

arch/arm64/disassembler/decode2.c:8143–8181  ·  view source on GitHub ↗

fmaxnm_advsimd.xml */

Source from the content-addressed store, hash-verified

8141
8142/* fmaxnm_advsimd.xml */
8143int FMAXNM_advsimd(context *ctx, Instruction *instr)
8144{
8145 int rc = DECODE_STATUS_UNMATCHED;
8146 /* class iclass_half */
8147 /* 0|Q=x|U=0|01110|a=0|10|Rm=xxxxx|00|Op3=000|1|Rn=xxxxx|Rd=xxxxx */
8148 if((INSWORD & 0xBFE0FC00)==0xE400400) {
8149 decode_fields32(ENC_FMAXNM_ASIMDSAMEFP16_ONLY, ctx, instr);
8150 if(!HaveFP16Ext()) {
8151 UNDEFINED;
8152 }
8153 ctx->d = UINT(ctx->Rd);
8154 ctx->n = UINT(ctx->Rn);
8155 ctx->m = UINT(ctx->Rm);
8156 ctx->esize = 0x10;
8157 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8158 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8159 ctx->pair = (ctx->U==1);
8160 ctx->minimum = (ctx->a==1);
8161 OK(ENC_FMAXNM_ASIMDSAMEFP16_ONLY);
8162 }
8163 /* class iclass_single_and_double */
8164 /* 0|Q=x|U=0|01110|o1=0|sz=x|1|Rm=xxxxx|opcode=11000|1|Rn=xxxxx|Rd=xxxxx */
8165 if((INSWORD & 0xBFA0FC00)==0xE20C400) {
8166 decode_fields32(ENC_FMAXNM_ASIMDSAME_ONLY, ctx, instr);
8167 ctx->d = UINT(ctx->Rd);
8168 ctx->n = UINT(ctx->Rn);
8169 ctx->m = UINT(ctx->Rm);
8170 if(((ctx->sz<<1)|ctx->Q)==2) {
8171 UNDEFINED;
8172 }
8173 ctx->esize = (0x20) << (UINT(ctx->sz));
8174 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8175 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8176 ctx->pair = (ctx->U==1);
8177 ctx->minimum = (ctx->o1==1);
8178 OK(ENC_FMAXNM_ASIMDSAME_ONLY);
8179 }
8180 return rc;
8181}
8182
8183/* fmaxnm_float.xml */
8184int FMAXNM_float(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected