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

Function FDIV_advsimd

arch/arm64/disassembler/decode2.c:7837–7871  ·  view source on GitHub ↗

fdiv_advsimd.xml */

Source from the content-addressed store, hash-verified

7835
7836/* fdiv_advsimd.xml */
7837int FDIV_advsimd(context *ctx, Instruction *instr)
7838{
7839 int rc = DECODE_STATUS_UNMATCHED;
7840 /* class iclass_half */
7841 /* 0|Q=x|U=1|01110|a=0|10|Rm=xxxxx|00|opcode=111|1|Rn=xxxxx|Rd=xxxxx */
7842 if((INSWORD & 0xBFE0FC00)==0x2E403C00) {
7843 decode_fields32(ENC_FDIV_ASIMDSAMEFP16_ONLY, ctx, instr);
7844 if(!HaveFP16Ext()) {
7845 UNDEFINED;
7846 }
7847 ctx->d = UINT(ctx->Rd);
7848 ctx->n = UINT(ctx->Rn);
7849 ctx->m = UINT(ctx->Rm);
7850 ctx->esize = 0x10;
7851 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
7852 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
7853 OK(ENC_FDIV_ASIMDSAMEFP16_ONLY);
7854 }
7855 /* class iclass_single_and_double */
7856 /* 0|Q=x|U=1|01110|size[1]=0|sz=x|1|Rm=xxxxx|opcode=11111|1|Rn=xxxxx|Rd=xxxxx */
7857 if((INSWORD & 0xBFA0FC00)==0x2E20FC00) {
7858 decode_fields32(ENC_FDIV_ASIMDSAME_ONLY, ctx, instr);
7859 ctx->d = UINT(ctx->Rd);
7860 ctx->n = UINT(ctx->Rn);
7861 ctx->m = UINT(ctx->Rm);
7862 if(((ctx->sz<<1)|ctx->Q)==2) {
7863 UNDEFINED;
7864 }
7865 ctx->esize = (0x20) << (UINT(ctx->sz));
7866 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
7867 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
7868 OK(ENC_FDIV_ASIMDSAME_ONLY);
7869 }
7870 return rc;
7871}
7872
7873/* fdiv_float.xml */
7874int FDIV_float(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected