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

Function FMINNM_advsimd

arch/arm64/disassembler/decode2.c:8549–8587  ·  view source on GitHub ↗

fminnm_advsimd.xml */

Source from the content-addressed store, hash-verified

8547
8548/* fminnm_advsimd.xml */
8549int FMINNM_advsimd(context *ctx, Instruction *instr)
8550{
8551 int rc = DECODE_STATUS_UNMATCHED;
8552 /* class iclass_half */
8553 /* 0|Q=x|U=0|01110|a=1|10|Rm=xxxxx|00|Op3=000|1|Rn=xxxxx|Rd=xxxxx */
8554 if((INSWORD & 0xBFE0FC00)==0xEC00400) {
8555 decode_fields32(ENC_FMINNM_ASIMDSAMEFP16_ONLY, ctx, instr);
8556 if(!HaveFP16Ext()) {
8557 UNDEFINED;
8558 }
8559 ctx->d = UINT(ctx->Rd);
8560 ctx->n = UINT(ctx->Rn);
8561 ctx->m = UINT(ctx->Rm);
8562 ctx->esize = 0x10;
8563 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8564 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8565 ctx->pair = (ctx->U==1);
8566 ctx->minimum = (ctx->a==1);
8567 OK(ENC_FMINNM_ASIMDSAMEFP16_ONLY);
8568 }
8569 /* class iclass_single_and_double */
8570 /* 0|Q=x|U=0|01110|o1=1|sz=x|1|Rm=xxxxx|opcode=11000|1|Rn=xxxxx|Rd=xxxxx */
8571 if((INSWORD & 0xBFA0FC00)==0xEA0C400) {
8572 decode_fields32(ENC_FMINNM_ASIMDSAME_ONLY, ctx, instr);
8573 ctx->d = UINT(ctx->Rd);
8574 ctx->n = UINT(ctx->Rn);
8575 ctx->m = UINT(ctx->Rm);
8576 if(((ctx->sz<<1)|ctx->Q)==2) {
8577 UNDEFINED;
8578 }
8579 ctx->esize = (0x20) << (UINT(ctx->sz));
8580 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8581 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8582 ctx->pair = (ctx->U==1);
8583 ctx->minimum = (ctx->o1==1);
8584 OK(ENC_FMINNM_ASIMDSAME_ONLY);
8585 }
8586 return rc;
8587}
8588
8589/* fminnm_float.xml */
8590int FMINNM_float(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected