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

Function FMIN_advsimd

arch/arm64/disassembler/decode2.c:8752–8790  ·  view source on GitHub ↗

fmin_advsimd.xml */

Source from the content-addressed store, hash-verified

8750
8751/* fmin_advsimd.xml */
8752int FMIN_advsimd(context *ctx, Instruction *instr)
8753{
8754 int rc = DECODE_STATUS_UNMATCHED;
8755 /* class iclass_half */
8756 /* 0|Q=x|U=0|01110|o1=1|10|Rm=xxxxx|00|opcode=110|1|Rn=xxxxx|Rd=xxxxx */
8757 if((INSWORD & 0xBFE0FC00)==0xEC03400) {
8758 decode_fields32(ENC_FMIN_ASIMDSAMEFP16_ONLY, ctx, instr);
8759 if(!HaveFP16Ext()) {
8760 UNDEFINED;
8761 }
8762 ctx->d = UINT(ctx->Rd);
8763 ctx->n = UINT(ctx->Rn);
8764 ctx->m = UINT(ctx->Rm);
8765 ctx->esize = 0x10;
8766 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8767 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8768 ctx->pair = (ctx->U==1);
8769 ctx->minimum = (ctx->o1==1);
8770 OK(ENC_FMIN_ASIMDSAMEFP16_ONLY);
8771 }
8772 /* class iclass_single_and_double */
8773 /* 0|Q=x|U=0|01110|o1=1|sz=x|1|Rm=xxxxx|opcode=11110|1|Rn=xxxxx|Rd=xxxxx */
8774 if((INSWORD & 0xBFA0FC00)==0xEA0F400) {
8775 decode_fields32(ENC_FMIN_ASIMDSAME_ONLY, ctx, instr);
8776 ctx->d = UINT(ctx->Rd);
8777 ctx->n = UINT(ctx->Rn);
8778 ctx->m = UINT(ctx->Rm);
8779 if(((ctx->sz<<1)|ctx->Q)==2) {
8780 UNDEFINED;
8781 }
8782 ctx->esize = (0x20) << (UINT(ctx->sz));
8783 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8784 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8785 ctx->pair = (ctx->U==1);
8786 ctx->minimum = (ctx->o1==1);
8787 OK(ENC_FMIN_ASIMDSAME_ONLY);
8788 }
8789 return rc;
8790}
8791
8792/* fmin_float.xml */
8793int FMIN_float(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected