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

Function FMINP_advsimd_vec

arch/arm64/disassembler/decode2.c:8674–8712  ·  view source on GitHub ↗

fminp_advsimd_vec.xml */

Source from the content-addressed store, hash-verified

8672
8673/* fminp_advsimd_vec.xml */
8674int FMINP_advsimd_vec(context *ctx, Instruction *instr)
8675{
8676 int rc = DECODE_STATUS_UNMATCHED;
8677 /* class iclass_half */
8678 /* 0|Q=x|U=1|01110|o1=1|10|Rm=xxxxx|00|opcode=110|1|Rn=xxxxx|Rd=xxxxx */
8679 if((INSWORD & 0xBFE0FC00)==0x2EC03400) {
8680 decode_fields32(ENC_FMINP_ASIMDSAMEFP16_ONLY, ctx, instr);
8681 if(!HaveFP16Ext()) {
8682 UNDEFINED;
8683 }
8684 ctx->d = UINT(ctx->Rd);
8685 ctx->n = UINT(ctx->Rn);
8686 ctx->m = UINT(ctx->Rm);
8687 ctx->esize = 0x10;
8688 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8689 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8690 ctx->pair = (ctx->U==1);
8691 ctx->minimum = (ctx->o1==1);
8692 OK(ENC_FMINP_ASIMDSAMEFP16_ONLY);
8693 }
8694 /* class iclass_single_and_double */
8695 /* 0|Q=x|U=1|01110|o1=1|sz=x|1|Rm=xxxxx|opcode=11110|1|Rn=xxxxx|Rd=xxxxx */
8696 if((INSWORD & 0xBFA0FC00)==0x2EA0F400) {
8697 decode_fields32(ENC_FMINP_ASIMDSAME_ONLY, ctx, instr);
8698 ctx->d = UINT(ctx->Rd);
8699 ctx->n = UINT(ctx->Rn);
8700 ctx->m = UINT(ctx->Rm);
8701 if(((ctx->sz<<1)|ctx->Q)==2) {
8702 UNDEFINED;
8703 }
8704 ctx->esize = (0x20) << (UINT(ctx->sz));
8705 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8706 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8707 ctx->pair = (ctx->U==1);
8708 ctx->minimum = (ctx->o1==1);
8709 OK(ENC_FMINP_ASIMDSAME_ONLY);
8710 }
8711 return rc;
8712}
8713
8714/* fminv_advsimd.xml */
8715int FMINV_advsimd(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected